diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 3751fb2..4f5ba4c 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -101,9 +101,48 @@ jobs: with: composer-options: "--prefer-dist" + # ScannerTest checks keyword matching under a Turkish locale + - name: Generate the tr_TR.UTF-8 locale + run: sudo locale-gen tr_TR.UTF-8 + - name: Run tests run: composer test-unit + differential: + name: "Differential vs ext-phalcon" + needs: phpcs + runs-on: ubuntu-latest + + permissions: + contents: read + + steps: + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + with: + persist-credentials: false + + - name: Setup PHP with ext-phalcon + uses: shivammathur/setup-php@eb7c497e18156a6bbabfef1d3a82760b9eda3962 # v2 + with: + php-version: '8.3' + extensions: mbstring, phalcon-5.23.0 + coverage: none + tools: composer:v2 + env: + COMPOSER_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Install dependencies + uses: ramsey/composer-install@26d8a556604053a9612623447203a691f406fbe6 # v4 + with: + composer-options: "--prefer-dist" + + # tests/differential.php exits 0 when the extension is missing + - name: Assert the extension is actually loaded + run: php -m | grep -qi '^phalcon$' + + - name: Compare against the C parser (corpus + seeded fuzz) + run: php tests/differential.php --fuzz=5000 --seed=1 + coverage: name: Code Coverage needs: tests diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..13d5195 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,38 @@ +# Changelog + +All notable changes are documented here. The format is based on [Keep a Changelog][keep_a_changelog] and this project adheres to [Semantic Versioning][semantic_versioning]. + +## [Unreleased](https://github.com/phalcon/phql/releases/tag/vx.x.x) (2026-xx-xx) + +### Changed + +- The scanner and the parser are written by hand instead of being transliterated from cphalcon's re2c scanner and Lemon parser; `resources/files/parser.php`, the global `phql_*` functions and the `c/` sources are gone. +- `Phalcon\Phql\Parser::parse()` returns `?array`: `null` for a statement without any token (empty, blank, or starting with a NUL byte), as cphalcon does. +- `Phalcon\Phql\Scanner\Scanner` was rewritten: `new Scanner(string $phql)`, `next(): Token` and `cursor(): int` replace the `State`-based `scanForToken()` / `getToken()`. +- `Phalcon\Phql\Scanner\Token` holds an `int` opcode (an `Opcode` value or `Token::EOF` / `Token::SCAN_ERROR`) and a value; its `Opcode` type and `$length` property are gone. +- `Phalcon\Phql\Tokens` is `final`, and its `$names` table became `Tokens::name()`. +- `Phalcon\Phql\Scanner\Opcode` is unchanged. +- `ext-mbstring` is no longer required: the scanner works on bytes. +- Parsing is linear in the statement's length: a 40,000-item `IN` list parses in about 0.15 s instead of a minute. + +### Removed + +- `Phalcon\Phql\Parser\Status`, `Phalcon\Phql\Scanner\State` and `Phalcon\Phql\Scanner\ScannerStatus`. + +### Added + +- Parity tests against ext-phalcon: a statement corpus with goldens recorded from cphalcon (`tests/generate-golden.php`), `FixturesTest`, and `tests/differential.php` with a seeded fuzzer, run in CI. + +### Fixed + +Parsing now matches cphalcon exactly. Previously: + +- an empty statement threw "PHQL statement cannot be NULL" and a blank one "Syntax error, unexpected EOF", where cphalcon returns no result; +- syntax errors quoted one character instead of the rest of the statement, never showed the token's value, and lacked the statement's length; +- scanning errors did not skip the offending byte, cut the excerpt at the wrong length, and counted characters instead of bytes; +- string literals kept their escape sequences (cphalcon resolves `\n`, `\r`, `\t`, `\\`, `\'`, `\"`); +- deeply nested statements were accepted instead of failing with "Parsing failed, the PHQL statement is nested too deeply"; +- parsing time grew quadratically with the length of the statement. + +[keep_a_changelog]: https://keepachangelog.com/en/1.1.0/ +[semantic_versioning]: https://semver.org/spec/v2.0.0.html diff --git a/README.md b/README.md index 1139ac2..5ce1a94 100644 --- a/README.md +++ b/README.md @@ -17,6 +17,153 @@ This repository consists of the PHQL parser, for the Phalcon Query Language used by the Phalcon Framework. +## What this is + +Phalcon v6 is a pure-PHP rewrite of [cphalcon](https://github.com/phalcon/cphalcon), +the C extension behind Phalcon v5. This package is the PHQL parser for v6, and +it is a behavioural port of cphalcon's: the same intermediate representation +(key order and integer types included), the same error messages on the same +tokens, and the same limit on how deeply a statement may nest. A statement that +parses (or fails) one way under v5 parses (or fails) the same way here. + +The scanner and the parser are written by hand. cphalcon generates its own from +a re2c scanner and a Lemon grammar; earlier versions of this package carried PHP +transliterations of those generated artefacts. + +## Requirements + +* PHP `>= 8.1 < 9.0`; no extensions + +## Installation + +```bash +composer require phalcon/phql +``` + +## Usage + +```php +use Phalcon\Phql\Parser; + +$ast = (new Parser())->parse('SELECT r.name FROM Robots r WHERE r.id = :id:'); +``` + +`parse()` returns the statement's AST, `null` for a statement without any token +(empty, blank, or starting with a NUL byte), or throws `Phalcon\Phql\Exception` +with cphalcon's message. `setEnableLiterals(false)` rejects numbers, strings, +`TRUE` and `FALSE` (cphalcon's `phalcon.orm.enable_literals`). The node `type` +values are the cases of `Phalcon\Phql\Scanner\Opcode`. + +The parser keeps no state between calls. cphalcon's per-request AST cache and +the `id` it adds to each AST belong to `Phalcon\Mvc\Model\Query\Lang` in +phalcon/phalcon, which also turns parse errors into +`Phalcon\Mvc\Model\Exception`. + +## How it works + +| Class | Role | cphalcon counterpart | +|---|---|---| +| `Scanner\Scanner` | Turns the statement into tokens, one per call | `scanner.re` | +| `Parser\TokenStream` | Feeds the parser one token at a time, runs the literal and opcode checks, builds every error message | the token loop in `base.c`, `%syntax_error` | +| `Parser\StatementParser` | Statements and clauses, by recursive descent - one method per group of grammar rules | `parser.php.lemon` | +| `Parser\ExpressionParser` | Expressions, by precedence climbing over the grammar's own precedence table | `parser.php.lemon` | +| `Parser\Cursor` | One token of lookahead plus a count of Lemon's parser stack | the generated `parser.c` | +| `Parser\Ast` | Builds the nodes | `parser.php.inc.h` | + +Tokens are scanned on demand rather than up front: cphalcon checks each token +(literals, unknown opcodes) and reports scanning errors only when it reaches +them, so a later token must not pre-empt an error cphalcon reports earlier. + +Scanning works on bytes with `strspn()`/`strcspn()` runs from the cursor, and +the grammar's left-recursive lists and left-associative operator chains are +loops, so parsing time grows linearly with the statement (a 40,000-item `IN` +list parses in about 0.15 s). + +## Compatibility notes + +Everything below is cphalcon's behaviour, reproduced on purpose and pinned by +the parity tests. + +* **Operator precedence follows the grammar, not SQL.** From loosest to + tightest: `AGAINST`; `BETWEEN`, `NOT BETWEEN`; comparisons and `@@ @> <@ &&`; + `AND`, `OR`; `LIKE`, `ILIKE`; `& | ^`; `* / %`; `+ - ||`; `IS`; `IN`; + `NOT`, `~`; the JSON operators. So `a = 1 AND b > 0` is `(a = (1 AND b)) > 0`, + `a + b * c` is `(a + b) * c` and `a BETWEEN 1 AND 2` is `a BETWEEN (1 AND 2)`. +* **`NOT LIKE`, `NOT ILIKE` and `NOT IN` take `NOT`'s level**, which is high + and right-associative: `a + b NOT LIKE c` is `a + (b NOT LIKE c)`. +* **Unary minus has binary minus's level**: `-a * b` is `(-a) * b`. +* **`NOT BETWEEN` is one token only with exactly one space**; `NOT BETWEEN` is + a syntax error. +* **String literals are unescaped** (`\n`, `\r`, `\t`, `\\`, `\'`, `\"`); any + other escape keeps its backslash. Bracketed identifiers (`[a b]`) are kept + verbatim, a leading backslash of a name is dropped, and `:` may appear inside + names (`x::int`). Numbers stay strings. +* **A NUL byte ends the statement**, as it ends a C string. Error messages + quote the statement up to the NUL but report its full length. +* **Syntax errors name the last token scanned** and quote the input after it, + so an error on the statement's last byte reads as `Syntax error, unexpected + EOF`. Token names come from cphalcon's table: `%%` for `%`, `NOT EQUALS` for + `!=` / `<>`, `HEXAINTEGER` for hexadecimal numbers, `UNKNOWN` for `TRUE`, + `FALSE`, `{placeholders}`, `NOT BETWEEN`, `~` and `^`. The value is shown for + value tokens only, even when empty or `0`. +* **Scanning errors** quote what follows the offending byte, cut to 16 bytes + when more than 16 bytes followed the previous token. When the very first + token fails, a long message is cut short exactly as cphalcon's fixed-size + buffer cuts it. +* **A lone `:` is reported as `Scanner: Unknown opcode 58`.** +* **Nesting fails closed** with "Parsing failed, the PHQL statement is nested + too deeply" exactly where cphalcon's 100-entry Lemon stack overflows (for + example 96 nested parentheses in a column, 31 nested subqueries, or 33 + chained `NOT LIKE`). +* **A statement without tokens returns `null`**, not an error. + +## Development + +```bash +composer install +composer test-unit # PHPUnit +composer analyze # PHPStan, level max +composer cs # PHP_CodeSniffer +composer cs-fixer-fix # php-cs-fixer +``` + +### Verifying against the C parser + +The parity corpus in `tests/fixtures/parity/*.php` lists statements: those of +cphalcon's, phalcon's and this package's test suites +(`tests/harvest-corpus.php` collects them) plus hand-written groups for the +grammar's shape, operator precedence, scanner edge cases, errors, nesting depth +and empty statements. + +* `tests/generate-golden.php` runs every statement through ext-phalcon - with + literals enabled and disabled - and records the outcome in + `tests/fixtures/parity/*.json`. It refuses to run without the extension, so + the goldens always come from cphalcon. +* `tests/unit/Parser/FixturesTest.php` replays the goldens against this package. +* `tests/differential.php` compares both implementations live, over the corpus + and over `--fuzz=N` generated statements (`--seed=S` makes them + reproducible). It exits quietly without the extension. + +```bash +php -d extension=phalcon tests/generate-golden.php # after changing the corpus +php -d extension=phalcon tests/differential.php --fuzz=50000 --seed=1 +``` + +Deliberate differences would be listed, with the expected outcome and a reason, +in `tests/fixtures/parity/allow-list.php`; there are none. + +## Why a hand-written parser + +The re2c DFA and the Lemon tables are build artefacts: thousands of lines that +nobody can review, that hide the grammar, and that had drifted from cphalcon +(error messages, scanning errors, string escapes, empty statements, the nesting +limit). Their PHP transliteration was also quadratic on long lists: a +40,000-item `IN` list took a minute. The grammar itself is small, and every +shift/reduce decision Lemon makes comes from a 12-level precedence table. A +precedence-climbing parser over that table, plus a counter that mirrors Lemon's +stack, reproduces the generated parser exactly while staying readable: each +parser method quotes the grammar rules it implements. + [packagist-version-badge]: https://img.shields.io/packagist/v/phalcon/phql?include_prereleases&style=flat-square [packagist-version-link]: https://packagist.org/packages/phalcon/phql diff --git a/c/parser.php.h b/c/parser.php.h deleted file mode 100644 index c93c52c..0000000 --- a/c/parser.php.h +++ /dev/null @@ -1,79 +0,0 @@ -#define PHQL_AGAINST 1 -#define PHQL_BETWEEN 2 -#define PHQL_BETWEEN_NOT 3 -#define PHQL_EQUALS 4 -#define PHQL_NOTEQUALS 5 -#define PHQL_LESS 6 -#define PHQL_GREATER 7 -#define PHQL_GREATEREQUAL 8 -#define PHQL_LESSEQUAL 9 -#define PHQL_AND 10 -#define PHQL_OR 11 -#define PHQL_LIKE 12 -#define PHQL_ILIKE 13 -#define PHQL_BITWISE_AND 14 -#define PHQL_BITWISE_OR 15 -#define PHQL_BITWISE_XOR 16 -#define PHQL_DIVIDE 17 -#define PHQL_TIMES 18 -#define PHQL_MOD 19 -#define PHQL_PLUS 20 -#define PHQL_MINUS 21 -#define PHQL_IS 22 -#define PHQL_IN 23 -#define PHQL_NOT 24 -#define PHQL_BITWISE_NOT 25 -#define PHQL_COMMA 26 -#define PHQL_SELECT 27 -#define PHQL_FROM 28 -#define PHQL_DISTINCT 29 -#define PHQL_ALL 30 -#define PHQL_IDENTIFIER 31 -#define PHQL_DOT 32 -#define PHQL_AS 33 -#define PHQL_INNER 34 -#define PHQL_JOIN 35 -#define PHQL_CROSS 36 -#define PHQL_LEFT 37 -#define PHQL_OUTER 38 -#define PHQL_RIGHT 39 -#define PHQL_FULL 40 -#define PHQL_ON 41 -#define PHQL_INSERT 42 -#define PHQL_INTO 43 -#define PHQL_VALUES 44 -#define PHQL_PARENTHESES_OPEN 45 -#define PHQL_PARENTHESES_CLOSE 46 -#define PHQL_UPDATE 47 -#define PHQL_SET 48 -#define PHQL_DELETE 49 -#define PHQL_WITH 50 -#define PHQL_WHERE 51 -#define PHQL_ORDER 52 -#define PHQL_BY 53 -#define PHQL_ASC 54 -#define PHQL_DESC 55 -#define PHQL_GROUP 56 -#define PHQL_HAVING 57 -#define PHQL_FOR 58 -#define PHQL_LIMIT 59 -#define PHQL_OFFSET 60 -#define PHQL_INTEGER 61 -#define PHQL_HINTEGER 62 -#define PHQL_NPLACEHOLDER 63 -#define PHQL_SPLACEHOLDER 64 -#define PHQL_BPLACEHOLDER 65 -#define PHQL_EXISTS 66 -#define PHQL_CAST 67 -#define PHQL_CONVERT 68 -#define PHQL_USING 69 -#define PHQL_CASE 70 -#define PHQL_END 71 -#define PHQL_WHEN 72 -#define PHQL_THEN 73 -#define PHQL_ELSE 74 -#define PHQL_NULL 75 -#define PHQL_STRING 76 -#define PHQL_DOUBLE 77 -#define PHQL_TRUE 78 -#define PHQL_FALSE 79 diff --git a/c/parser.php.lemon b/c/parser.php.lemon deleted file mode 100644 index a03dd7d..0000000 --- a/c/parser.php.lemon +++ /dev/null @@ -1,990 +0,0 @@ - -/** - * This file is part of the Phalcon Framework. - * - * (c) Phalcon Team - * - * For the full copyright and license information, please view - * the LICENSE.txt file that was distributed with this source code. - */ - -%token_prefix PHQL_ -%token_type {phql_parser_token*} -%default_type {zval} -%extra_argument {phql_parser_status *status} -%name phql_ - -%right AGAINST . -%left BETWEEN BETWEEN_NOT . -%left EQUALS NOTEQUALS LESS GREATER GREATEREQUAL LESSEQUAL OP_MATCHES OP_CONTAINS OP_CONTAINED OP_OVERLAPS . -%left AND OR . -%left LIKE ILIKE . -%left BITWISE_AND BITWISE_OR BITWISE_XOR . -%left DIVIDE TIMES MOD . -%left PLUS MINUS OP_CONCAT . -%left IS . -%right IN . -%right NOT BITWISE_NOT . -%left OP_JSON_GET OP_JSON_GET_TEXT OP_JSON_PATH OP_JSON_PATH_TEXT . -%left COMMA . - -%include { -#include "parser.php.inc.h" -} - -%syntax_error { - if (status->scanner_state->start_length) { - { - - char *token_name = NULL; - int token_found = 0; - unsigned int token_length; - const phql_token_names *tokens = phql_tokens; - int active_token = status->scanner_state->active_token; - int near_length = status->scanner_state->start_length; - - if (active_token) { - - do { - if (tokens->code == active_token) { - token_name = tokens->name; - token_length = tokens->length; - token_found = 1; - break; - } - ++tokens; - } while (tokens[0].code != 0); - - } - - if (!token_name) { - token_length = strlen("UNKNOWN"); - token_name = estrndup("UNKNOWN", token_length); - token_found = 0; - } - - status->syntax_error_len = 96 + status->token->len + token_length + near_length + status->phql_length;; - status->syntax_error = emalloc(sizeof(char) * status->syntax_error_len); - - if (near_length > 0) { - if (status->token->value) { - snprintf(status->syntax_error, status->syntax_error_len, "Syntax error, unexpected token %s(%s), near to '%s', when parsing: %s (%d)", token_name, status->token->value, status->scanner_state->start, status->phql, status->phql_length); - } else { - snprintf(status->syntax_error, status->syntax_error_len, "Syntax error, unexpected token %s, near to '%s', when parsing: %s (%d)", token_name, status->scanner_state->start, status->phql, status->phql_length); - } - } else { - if (active_token != PHQL_T_IGNORE) { - if (status->token->value) { - snprintf(status->syntax_error, status->syntax_error_len, "Syntax error, unexpected token %s(%s), at the end of query, when parsing: %s (%d)", token_name, status->token->value, status->phql, status->phql_length); - } else { - snprintf(status->syntax_error, status->syntax_error_len, "Syntax error, unexpected token %s, at the end of query, when parsing: %s (%d)", token_name, status->phql, status->phql_length); - } - } else { - snprintf(status->syntax_error, status->syntax_error_len, "Syntax error, unexpected EOF, at the end of query"); - } - status->syntax_error[status->syntax_error_len - 1] = '\0'; - } - - if (!token_found) { - if (token_name) { - efree(token_name); - } - } - } - } else { - status->syntax_error_len = strlen("Syntax error, unexpected EOF"); - status->syntax_error = estrndup("Syntax error, unexpected EOF", status->syntax_error_len); - } - - status->status = PHQL_PARSING_FAILED; -} - -%token_destructor { - if ($$) { - if ($$->free_flag) { - efree($$->token); - } - efree($$); - } -} - -program ::= query_language(Q) . { - ZVAL_ZVAL(&status->ret, &Q, 1, 1); -} - -%destructor query_language { - zval_ptr_dtor(&$$); -} - -query_language(R) ::= select_statement(S) . { - R = S; -} - -query_language(R) ::= insert_statement(I) . { - R = I; -} - -query_language(R) ::= update_statement(U) . { - R = U; -} - -query_language(R) ::= delete_statement(D) . { - R = D; -} - -%destructor select_statement { - zval_ptr_dtor(&$$); -} - -select_statement(R) ::= select_clause(S) where_clause(W) group_clause(G) having_clause(H) order_clause(O) select_limit_clause(L) for_update_clause(F) . { - phql_ret_select_statement(&R, &S, &W, &O, &G, &H, &L, &F); -} - -%destructor select_clause { - zval_ptr_dtor(&$$); -} - -select_clause(R) ::= SELECT distinct_all(D) column_list(C) FROM associated_name_list(A) join_list_or_null(J) . { - phql_ret_select_clause(&R, &D, &C, &A, &J); -} - -%destructor distinct_all { - zephir_safe_zval_ptr_dtor($$); -} - -distinct_all(R) ::= DISTINCT . { - phql_ret_distinct_all(&R, 1); -} - -distinct_all(R) ::= ALL . { - phql_ret_distinct_all(&R, 0); -} - -distinct_all(R) ::= . { - ZVAL_UNDEF(&R); -} - -%destructor column_list { - zval_ptr_dtor(&$$); -} - -column_list(R) ::= column_list(L) COMMA column_item(C) . { - phql_ret_zval_list(&R, &L, &C); -} - -column_list(R) ::= column_item(I) . { - phql_ret_zval_list(&R, &I, NULL); -} - -%destructor column_item { - zval_ptr_dtor(&$$); -} - -column_item(R) ::= TIMES . { - phql_ret_column_item(&R, PHQL_T_STARALL, NULL, NULL, NULL); -} - -column_item(R) ::= IDENTIFIER(I) DOT TIMES . { - phql_ret_column_item(&R, PHQL_T_DOMAINALL, NULL, I, NULL); -} - -column_item(R) ::= expr(E) AS IDENTIFIER(I) . { - phql_ret_column_item(&R, PHQL_T_EXPR, &E, NULL, I); -} - -column_item(R) ::= expr(E) IDENTIFIER(I) . { - phql_ret_column_item(&R, PHQL_T_EXPR, &E, NULL, I); -} - -column_item(R) ::= expr(E) . { - phql_ret_column_item(&R, PHQL_T_EXPR, &E, NULL, NULL); -} - -%destructor associated_name_list { - zval_ptr_dtor(&$$); -} - -associated_name_list(R) ::= associated_name_list(L) COMMA associated_name(A) . { - phql_ret_zval_list(&R, &L, &A); -} - -associated_name_list(R) ::= associated_name(L) . { - R = L; -} - -join_list_or_null(R) ::= join_list(L) . { - R = L; -} - -join_list_or_null(R) ::= . { - ZVAL_UNDEF(&R); -} - -%destructor join_list { - zval_ptr_dtor(&$$); -} - -join_list(R) ::= join_list(L) join_item(I) . { - phql_ret_zval_list(&R, &L, &I); -} - -join_list(R) ::= join_item(I) . { - R = I; -} - -%destructor join_item { - zval_ptr_dtor(&$$); -} - -join_item(R) ::= join_clause(C) . { - R = C; -} - -%destructor join_clause { - zval_ptr_dtor(&$$); -} - -/** Join + conditions + alias */ -join_clause(R) ::= join_type(T) aliased_or_qualified_name(Q) join_associated_name(A) join_conditions(C) . { - phql_ret_join_item(&R, &T, &Q, &A, &C); -} - -%destructor join_associated_name { - zephir_safe_zval_ptr_dtor($$); -} - -join_associated_name(R) ::= AS IDENTIFIER(I) . { - phql_ret_qualified_name(&R, NULL, NULL, I); -} - -join_associated_name(R) ::= IDENTIFIER(I) . { - phql_ret_qualified_name(&R, NULL, NULL, I); -} - -join_associated_name(R) ::= . { - ZVAL_UNDEF(&R); -} - -%destructor join_type { - zval_ptr_dtor(&$$); -} - -join_type(R) ::= INNER JOIN . { - phql_ret_join_type(&R, PHQL_T_INNERJOIN); -} - -join_type(R) ::= CROSS JOIN . { - phql_ret_join_type(&R, PHQL_T_CROSSJOIN); -} - -join_type(R) ::= LEFT OUTER JOIN . { - phql_ret_join_type(&R, PHQL_T_LEFTJOIN); -} - -join_type(R) ::= LEFT JOIN . { - phql_ret_join_type(&R, PHQL_T_LEFTJOIN); -} - -join_type(R) ::= RIGHT OUTER JOIN . { - phql_ret_join_type(&R, PHQL_T_RIGHTJOIN); -} - -join_type(R) ::= RIGHT JOIN . { - phql_ret_join_type(&R, PHQL_T_RIGHTJOIN); -} - -join_type(R) ::= FULL OUTER JOIN . { - phql_ret_join_type(&R, PHQL_T_FULLJOIN); -} - -join_type(R) ::= FULL JOIN . { - phql_ret_join_type(&R, PHQL_T_FULLJOIN); -} - -join_type(R) ::= JOIN . { - phql_ret_join_type(&R, PHQL_T_INNERJOIN); -} - -%destructor join_conditions { - zephir_safe_zval_ptr_dtor($$); -} - -join_conditions(R) ::= ON expr(E) . { - R = E; -} - -join_conditions(R) ::= . { - ZVAL_UNDEF(&R); -} - -%destructor insert_statement { - zval_ptr_dtor(&$$); -} - -/* Insert */ -insert_statement(R) ::= INSERT INTO aliased_or_qualified_name(Q) VALUES PARENTHESES_OPEN values_list(V) PARENTHESES_CLOSE . { - phql_ret_insert_statement(&R, &Q, NULL, &V); -} - -insert_statement(R) ::= INSERT INTO aliased_or_qualified_name(Q) PARENTHESES_OPEN field_list(F) PARENTHESES_CLOSE VALUES PARENTHESES_OPEN values_list(V) PARENTHESES_CLOSE . { - phql_ret_insert_statement(&R, &Q, &F, &V); -} - -%destructor value_list { - zval_ptr_dtor(&$$); -} - -values_list(R) ::= values_list(L) COMMA value_item(I) . { - phql_ret_zval_list(&R, &L, &I); -} - -values_list(R) ::= value_item(I) . { - phql_ret_zval_list(&R, &I, NULL); -} - -value_item(R) ::= expr(E) . { - R = E; -} - -%destructor field_list { - zval_ptr_dtor(&$$); -} - -field_list(R) ::= field_list(L) COMMA field_item(I) . { - phql_ret_zval_list(&R, &L, &I); -} - -field_list(R) ::= field_item(I) . { - phql_ret_zval_list(&R, &I, NULL); -} - -%destructor field_item { - zval_ptr_dtor(&$$); -} - -field_item(R) ::= IDENTIFIER(I) . { - phql_ret_qualified_name(&R, NULL, NULL, I); -} - -/* Update */ - -%destructor update_statement { - zval_ptr_dtor(&$$); -} - -update_statement(R) ::= update_clause(U) where_clause(W) limit_clause(L) . { - phql_ret_update_statement(&R, &U, &W, &L); -} - -%destructor update_clause { - zval_ptr_dtor(&$$); -} - -update_clause(R) ::= UPDATE associated_name(A) join_list_or_null(J) SET update_item_list(U) . { - phql_ret_update_clause(&R, &A, &J, &U); -} - -%destructor update_item_list { - zval_ptr_dtor(&$$); -} - -update_item_list(R) ::= update_item_list(L) COMMA update_item(I) . { - phql_ret_zval_list(&R, &L, &I); -} - -update_item_list(R) ::= update_item(I) . { - R = I; -} - -%destructor update_item { - zval_ptr_dtor(&$$); -} - -update_item(R) ::= qualified_name(Q) EQUALS new_value(N) . { - phql_ret_update_item(&R, &Q, &N); -} - -new_value(R) ::= expr(E) . { - R = E; -} - -/* Delete */ - -%destructor delete_statement { - zval_ptr_dtor(&$$); -} - -delete_statement(R) ::= delete_clause(D) where_clause(W) limit_clause(L) . { - phql_ret_delete_statement(&R, &D, &W, &L); -} - -%destructor delete_clause { - zval_ptr_dtor(&$$); -} - -delete_clause(R) ::= DELETE FROM associated_name(A) . { - phql_ret_delete_clause(&R, &A); -} - -%destructor associated_name { - zval_ptr_dtor(&$$); -} - -associated_name(R) ::= aliased_or_qualified_name(Q) AS IDENTIFIER(I) . { - phql_ret_assoc_name(&R, &Q, I, NULL); -} - -associated_name(R) ::= aliased_or_qualified_name(Q) IDENTIFIER(I) . { - phql_ret_assoc_name(&R, &Q, I, NULL); -} - -associated_name(R) ::= aliased_or_qualified_name(Q) . { - phql_ret_assoc_name(&R, &Q, NULL, NULL); -} - -associated_name(R) ::= aliased_or_qualified_name(Q) AS IDENTIFIER(I) WITH with_item(W) . { - phql_ret_assoc_name(&R, &Q, I, &W); -} - -associated_name(R) ::= aliased_or_qualified_name(Q) AS IDENTIFIER(I) WITH PARENTHESES_OPEN with_list(W) PARENTHESES_CLOSE . { - phql_ret_assoc_name(&R, &Q, I, &W); -} - -associated_name(R) ::= aliased_or_qualified_name(Q) IDENTIFIER(I) WITH PARENTHESES_OPEN with_list(W) PARENTHESES_CLOSE . { - phql_ret_assoc_name(&R, &Q, I, &W); -} - -associated_name(R) ::= aliased_or_qualified_name(Q) IDENTIFIER(I) WITH with_item(W) . { - phql_ret_assoc_name(&R, &Q, I, &W); -} - -associated_name(R) ::= aliased_or_qualified_name(Q) WITH PARENTHESES_OPEN with_list(W) PARENTHESES_CLOSE . { - phql_ret_assoc_name(&R, &Q, NULL, &W); -} - -associated_name(R) ::= aliased_or_qualified_name(Q) WITH with_item(W) . { - phql_ret_assoc_name(&R, &Q, NULL, &W); -} - -%destructor with_list { - zval_ptr_dtor(&$$); -} - -with_list(R) ::= with_list(L) COMMA with_item(I) . { - phql_ret_zval_list(&R, &L, &I); -} - -with_list(R) ::= with_item(I) . { - R = I; -} - -%destructor with_item { - zval_ptr_dtor(&$$); -} - -with_item(R) ::= IDENTIFIER(I) . { - phql_ret_qualified_name(&R, NULL, NULL, I); -} - -%destructor aliased_or_qualified_name { - zval_ptr_dtor(&$$); -} - -aliased_or_qualified_name(R) ::= qualified_name(Q) . { - R = Q; -} - -%destructor where_clause { - zephir_safe_zval_ptr_dtor($$); -} - -where_clause(R) ::= WHERE expr(E) . { - R = E; -} - -where_clause(R) ::= . { - ZVAL_UNDEF(&R); -} - -%destructor order_clause { - zephir_safe_zval_ptr_dtor($$); -} - -order_clause(R) ::= ORDER BY order_list(O) . { - R = O; -} - -order_clause(R) ::= . { - ZVAL_UNDEF(&R); -} - -%destructor order_list { - zval_ptr_dtor(&$$); -} - -order_list(R) ::= order_list(L) COMMA order_item(I) . { - phql_ret_zval_list(&R, &L, &I); -} - -order_list(R) ::= order_item(I) . { - R = I; -} - -%destructor order_item { - zval_ptr_dtor(&$$); -} - -order_item(R) ::= expr(O) . { - phql_ret_order_item(&R, &O, 0); -} - -order_item(R) ::= expr(O) ASC . { - phql_ret_order_item(&R, &O, PHQL_T_ASC); -} - -order_item(R) ::= expr(O) DESC . { - phql_ret_order_item(&R, &O, PHQL_T_DESC); -} - -%destructor group_clause { - zval_ptr_dtor(&$$); -} - -group_clause(R) ::= GROUP BY group_list(G) . { - R = G; -} - -group_clause(R) ::= . { - ZVAL_UNDEF(&R); -} - -%destructor group_list { - zval_ptr_dtor(&$$); -} - -group_list(R) ::= group_list(L) COMMA group_item(I) . { - phql_ret_zval_list(&R, &L, &I); -} - -group_list(R) ::= group_item(I) . { - R = I; -} - -%destructor group_item { - zval_ptr_dtor(&$$); -} - -group_item(R) ::= expr(E) . { - R = E; -} - -%destructor having_clause { - zephir_safe_zval_ptr_dtor($$); -} - -having_clause(R) ::= HAVING expr(E) . { - R = E; -} - -having_clause(R) ::= . { - ZVAL_UNDEF(&R); -} - -%destructor for_update_clause { - zephir_safe_zval_ptr_dtor($$); -} - -for_update_clause(R) ::= FOR UPDATE . { - phql_ret_for_update_clause(&R); -} - -for_update_clause(R) ::= . { - ZVAL_UNDEF(&R); -} - -%destructor select_limit_clause { - zephir_safe_zval_ptr_dtor($$); -} - -select_limit_clause(R) ::= LIMIT integer_or_placeholder(I) . { - phql_ret_limit_clause(&R, &I, NULL); -} - -select_limit_clause(R) ::= LIMIT integer_or_placeholder(O) COMMA integer_or_placeholder(I). { - phql_ret_limit_clause(&R, &I, &O); -} - -select_limit_clause(R) ::= LIMIT integer_or_placeholder(I) OFFSET integer_or_placeholder(O). { - phql_ret_limit_clause(&R, &I, &O); -} - -select_limit_clause(R) ::= . { - ZVAL_UNDEF(&R); -} - -%destructor limit_clause { - zephir_safe_zval_ptr_dtor($$); -} - -limit_clause(R) ::= LIMIT integer_or_placeholder(I) . { - phql_ret_limit_clause(&R, &I, NULL); -} - -limit_clause(R) ::= . { - ZVAL_UNDEF(&R); -} - -integer_or_placeholder(R) ::= INTEGER(I) . { - phql_ret_literal_zval(&R, PHQL_T_INTEGER, I); -} - -integer_or_placeholder(R) ::= HINTEGER(I) . { - phql_ret_literal_zval(&R, PHQL_T_HINTEGER, I); -} - -integer_or_placeholder(R) ::= NPLACEHOLDER(P) . { - phql_ret_placeholder_zval(&R, PHQL_T_NPLACEHOLDER, P); -} - -integer_or_placeholder(R) ::= SPLACEHOLDER(P) . { - phql_ret_placeholder_zval(&R, PHQL_T_SPLACEHOLDER, P); -} - -integer_or_placeholder(R) ::= BPLACEHOLDER(P) . { - phql_ret_placeholder_zval(&R, PHQL_T_BPLACEHOLDER, P); -} - -%destructor expr { - zval_ptr_dtor(&$$); -} - -expr(R) ::= MINUS expr(E) . { - phql_ret_expr(&R, PHQL_T_MINUS, NULL, &E); -} - -expr(R) ::= expr(O1) MINUS expr(O2) . { - phql_ret_expr(&R, PHQL_T_SUB, &O1, &O2); -} - -expr(R) ::= expr(O1) PLUS expr(O2) . { - phql_ret_expr(&R, PHQL_T_ADD, &O1, &O2); -} - -expr(R) ::= expr(O1) TIMES expr(O2) . { - phql_ret_expr(&R, PHQL_T_MUL, &O1, &O2); -} - -expr(R) ::= expr(O1) DIVIDE expr(O2) . { - phql_ret_expr(&R, PHQL_T_DIV, &O1, &O2); -} - -expr(R) ::= expr(O1) MOD expr(O2) . { - phql_ret_expr(&R, PHQL_T_MOD, &O1, &O2); -} - -expr(R) ::= expr(O1) AND expr(O2) . { - phql_ret_expr(&R, PHQL_T_AND, &O1, &O2); -} - -expr(R) ::= expr(O1) OR expr(O2) . { - phql_ret_expr(&R, PHQL_T_OR, &O1, &O2); -} - -expr(R) ::= expr(O1) BITWISE_AND expr(O2) . { - phql_ret_expr(&R, PHQL_T_BITWISE_AND, &O1, &O2); -} - -expr(R) ::= expr(O1) BITWISE_OR expr(O2) . { - phql_ret_expr(&R, PHQL_T_BITWISE_OR, &O1, &O2); -} - -expr(R) ::= expr(O1) BITWISE_XOR expr(O2) . { - phql_ret_expr(&R, PHQL_T_BITWISE_XOR, &O1, &O2); -} - -expr(R) ::= expr(O1) OP_MATCHES expr(O2) . { - phql_ret_expr(&R, PHQL_T_OP_MATCHES, &O1, &O2); -} - -expr(R) ::= expr(O1) OP_CONTAINS expr(O2) . { - phql_ret_expr(&R, PHQL_T_OP_CONTAINS, &O1, &O2); -} - -expr(R) ::= expr(O1) OP_CONTAINED expr(O2) . { - phql_ret_expr(&R, PHQL_T_OP_CONTAINED, &O1, &O2); -} - -expr(R) ::= expr(O1) OP_OVERLAPS expr(O2) . { - phql_ret_expr(&R, PHQL_T_OP_OVERLAPS, &O1, &O2); -} - -expr(R) ::= expr(O1) OP_CONCAT expr(O2) . { - phql_ret_expr(&R, PHQL_T_OP_CONCAT, &O1, &O2); -} - -expr(R) ::= expr(O1) OP_JSON_GET expr(O2) . { - phql_ret_expr(&R, PHQL_T_OP_JSON_GET, &O1, &O2); -} - -expr(R) ::= expr(O1) OP_JSON_GET_TEXT expr(O2) . { - phql_ret_expr(&R, PHQL_T_OP_JSON_GET_TEXT, &O1, &O2); -} - -expr(R) ::= expr(O1) OP_JSON_PATH expr(O2) . { - phql_ret_expr(&R, PHQL_T_OP_JSON_PATH, &O1, &O2); -} - -expr(R) ::= expr(O1) OP_JSON_PATH_TEXT expr(O2) . { - phql_ret_expr(&R, PHQL_T_OP_JSON_PATH_TEXT, &O1, &O2); -} - -expr(R) ::= expr(O1) EQUALS expr(O2) . { - phql_ret_expr(&R, PHQL_T_EQUALS, &O1, &O2); -} - -expr(R) ::= expr(O1) NOTEQUALS expr(O2) . { - phql_ret_expr(&R, PHQL_T_NOTEQUALS, &O1, &O2); -} - -expr(R) ::= expr(O1) LESS expr(O2) . { - phql_ret_expr(&R, PHQL_T_LESS, &O1, &O2); -} - -expr(R) ::= expr(O1) GREATER expr(O2) . { - phql_ret_expr(&R, PHQL_T_GREATER, &O1, &O2); -} - -expr(R) ::= expr(O1) GREATEREQUAL expr(O2) . { - phql_ret_expr(&R, PHQL_T_GREATEREQUAL, &O1, &O2); -} - -expr(R) ::= expr(O1) LESSEQUAL expr(O2) . { - phql_ret_expr(&R, PHQL_T_LESSEQUAL, &O1, &O2); -} - -expr(R) ::= expr(O1) LIKE expr(O2) . { - phql_ret_expr(&R, PHQL_T_LIKE, &O1, &O2); -} - -expr(R) ::= expr(O1) NOT LIKE expr(O2) . { - phql_ret_expr(&R, PHQL_T_NLIKE, &O1, &O2); -} - -expr(R) ::= expr(O1) ILIKE expr(O2) . { - phql_ret_expr(&R, PHQL_T_ILIKE, &O1, &O2); -} - -expr(R) ::= expr(O1) NOT ILIKE expr(O2) . { - phql_ret_expr(&R, PHQL_T_NILIKE, &O1, &O2); -} - -expr(R) ::= expr(E) IN PARENTHESES_OPEN argument_list(L) PARENTHESES_CLOSE . { - phql_ret_expr(&R, PHQL_T_IN, &E, &L); -} - -expr(R) ::= expr(E) NOT IN PARENTHESES_OPEN argument_list(L) PARENTHESES_CLOSE . { - phql_ret_expr(&R, PHQL_T_NOTIN, &E, &L); -} - -expr(R) ::= PARENTHESES_OPEN select_statement(S) PARENTHESES_CLOSE . { - phql_ret_expr(&R, PHQL_T_SUBQUERY, &S, NULL); -} - -expr(R) ::= expr(E) IN PARENTHESES_OPEN select_statement(S) PARENTHESES_CLOSE . { - phql_ret_expr(&R, PHQL_T_IN, &E, &S); -} - -expr(R) ::= expr(E) NOT IN PARENTHESES_OPEN select_statement(S) PARENTHESES_CLOSE . { - phql_ret_expr(&R, PHQL_T_NOTIN, &E, &S); -} - -expr(R) ::= EXISTS PARENTHESES_OPEN select_statement(S) PARENTHESES_CLOSE . { - phql_ret_expr(&R, PHQL_T_EXISTS, NULL, &S); -} - -expr(R) ::= expr(O1) AGAINST expr(O2) . { - phql_ret_expr(&R, PHQL_T_AGAINST, &O1, &O2); -} - -expr(R) ::= CAST PARENTHESES_OPEN expr(E) AS IDENTIFIER(I) PARENTHESES_CLOSE . { - { - zval qualified; - phql_ret_raw_qualified_name(&qualified, I, NULL); - phql_ret_expr(&R, PHQL_T_CAST, &E, &qualified); - } -} - -expr(R) ::= CONVERT PARENTHESES_OPEN expr(E) USING IDENTIFIER(I) PARENTHESES_CLOSE . { - { - zval qualified; - phql_ret_raw_qualified_name(&qualified, I, NULL); - phql_ret_expr(&R, PHQL_T_CONVERT, &E, &qualified); - } -} - -expr(R) ::= CASE expr(E) when_clauses(W) END . { - phql_ret_expr(&R, PHQL_T_CASE, &E, &W); -} - -when_clauses(R) ::= when_clauses(L) when_clause(W) . { - phql_ret_zval_list(&R, &L, &W); -} - -when_clauses(R) ::= when_clause(W) . { - phql_ret_zval_list(&R, &W, NULL); -} - -when_clause(R) ::= WHEN expr(E) THEN expr(T) . { - phql_ret_expr(&R, PHQL_T_WHEN, &E, &T); -} - -when_clause(R) ::= ELSE expr(E) . { - phql_ret_expr(&R, PHQL_T_ELSE, &E, NULL); -} - -%destructor function_call { - zval_ptr_dtor(&$$); -} - -expr(R) ::= function_call(F) . { - R = F; -} - -function_call(R) ::= IDENTIFIER(I) PARENTHESES_OPEN distinct_or_null(D) argument_list_or_null(L) PARENTHESES_CLOSE . { - phql_ret_func_call(&R, I, &L, &D); -} - -%destructor distinct_or_null { - zephir_safe_zval_ptr_dtor($$); -} - -distinct_or_null(R) ::= DISTINCT . { - phql_ret_distinct(&R); -} - -distinct_or_null(R) ::= . { - ZVAL_UNDEF(&R); -} - -%destructor argument_list_or_null { - zephir_safe_zval_ptr_dtor($$); -} - -argument_list_or_null(R) ::= argument_list(L) . { - R = L; -} - -argument_list_or_null(R) ::= . { - ZVAL_UNDEF(&R); -} - -%destructor argument_list { - zval_ptr_dtor(&$$); -} - -argument_list(R) ::= argument_list(L) COMMA argument_item(I) . { - phql_ret_zval_list(&R, &L, &I); -} - -argument_list(R) ::= argument_item(I) . { - phql_ret_zval_list(&R, &I, NULL); -} - -%destructor argument_item { - zval_ptr_dtor(&$$); -} - -argument_item(R) ::= TIMES . { - phql_ret_column_item(&R, PHQL_T_STARALL, NULL, NULL, NULL); -} - -argument_item(R) ::= expr(E) . { - R = E; -} - -expr(R) ::= expr(E) IS NULL . { - phql_ret_expr(&R, PHQL_T_ISNULL, &E, NULL); -} - -expr(R) ::= expr(E) IS NOT NULL . { - phql_ret_expr(&R, PHQL_T_ISNOTNULL, &E, NULL); -} - -expr(R) ::= expr(E) BETWEEN expr(L) . { - phql_ret_expr(&R, PHQL_T_BETWEEN, &E, &L); -} - -expr(R) ::= expr(E) BETWEEN_NOT expr(L) . { - phql_ret_expr(&R, PHQL_T_BETWEEN_NOT, &E, &L); -} - -expr(R) ::= NOT expr(E) . { - phql_ret_expr(&R, PHQL_T_NOT, NULL, &E); -} - -expr(R) ::= BITWISE_NOT expr(E) . { - phql_ret_expr(&R, PHQL_T_BITWISE_NOT, NULL, &E); -} - -expr(R) ::= PARENTHESES_OPEN expr(E) PARENTHESES_CLOSE . { - phql_ret_expr(&R, PHQL_T_ENCLOSED, &E, NULL); -} - -expr(R) ::= qualified_name(Q) . { - R = Q; -} - -expr(R) ::= INTEGER(I) . { - phql_ret_literal_zval(&R, PHQL_T_INTEGER, I); -} - -expr(R) ::= HINTEGER(I) . { - phql_ret_literal_zval(&R, PHQL_T_HINTEGER, I); -} - -expr(R) ::= STRING(S) . { - phql_ret_literal_zval(&R, PHQL_T_STRING, S); -} - -expr(R) ::= DOUBLE(D) . { - phql_ret_literal_zval(&R, PHQL_T_DOUBLE, D); -} - -expr(R) ::= NULL . { - phql_ret_literal_zval(&R, PHQL_T_NULL, NULL); -} - -expr(R) ::= TRUE . { - phql_ret_literal_zval(&R, PHQL_T_TRUE, NULL); -} - -expr(R) ::= FALSE . { - phql_ret_literal_zval(&R, PHQL_T_FALSE, NULL); -} - -/* ?0 */ -expr(R) ::= NPLACEHOLDER(P) . { - phql_ret_placeholder_zval(&R, PHQL_T_NPLACEHOLDER, P); -} - -/* :placeholder: */ -expr(R) ::= SPLACEHOLDER(P) . { - phql_ret_placeholder_zval(&R, PHQL_T_SPLACEHOLDER, P); -} - -/* {placeholder} */ -expr(R) ::= BPLACEHOLDER(P) . { - phql_ret_placeholder_zval(&R, PHQL_T_BPLACEHOLDER, P); -} - -%destructor qualified_name { - zval_ptr_dtor(&$$); -} - -qualified_name(R) ::= IDENTIFIER(A) DOT IDENTIFIER(B) . { - phql_ret_qualified_name(&R, NULL, A, B); -} - -qualified_name(R) ::= IDENTIFIER(A) . { - phql_ret_qualified_name(&R, NULL, NULL, A); -} diff --git a/c/scanner.h b/c/scanner.h deleted file mode 100644 index 35ff8d2..0000000 --- a/c/scanner.h +++ /dev/null @@ -1,169 +0,0 @@ -/* scanner.h - * - * This file is part of the Phalcon Framework. - * - * (c) Phalcon Team - * - * For the full copyright and license information, please view the - * LICENSE.txt file that was distributed with this source code. - */ - -#ifndef PHALCON_MVC_MODEL_QUERY_SCANNER_H -#define PHALCON_MVC_MODEL_QUERY_SCANNER_H - -#define PHQL_SCANNER_RETCODE_EOF -1 -#define PHQL_SCANNER_RETCODE_ERR -2 -#define PHQL_SCANNER_RETCODE_IMPOSSIBLE -3 - -#define PHQL_T_IGNORE 257 - -/* Literals & Identifiers */ -#define PHQL_T_INTEGER 258 -#define PHQL_T_DOUBLE 259 -#define PHQL_T_STRING 260 -#define PHQL_T_IDENTIFIER 265 -#define PHQL_T_HINTEGER 414 - -/* Operators */ -#define PHQL_T_ADD '+' -#define PHQL_T_SUB '-' -#define PHQL_T_MUL '*' -#define PHQL_T_DIV '/' -#define PHQL_T_MOD '%' -#define PHQL_T_BITWISE_AND '&' -#define PHQL_T_BITWISE_OR '|' -#define PHQL_T_BITWISE_XOR '^' -#define PHQL_T_BITWISE_NOT '~' -#define PHQL_T_AND 266 -#define PHQL_T_OR 267 -#define PHQL_T_LIKE 268 -#define PHQL_T_ILIKE 275 -#define PHQL_T_AGAINST 276 - -#define PHQL_T_DOT '.' -#define PHQL_T_COMMA 269 -#define PHQL_T_COLON ':' - -#define PHQL_T_EQUALS '=' -#define PHQL_T_NOTEQUALS 270 -#define PHQL_T_NOT '!' -#define PHQL_T_LESS '<' -#define PHQL_T_LESSEQUAL 271 -#define PHQL_T_GREATER '>' -#define PHQL_T_GREATEREQUAL 272 - -#define PHQL_T_PARENTHESES_OPEN '(' -#define PHQL_T_PARENTHESES_CLOSE ')' - -/** Placeholders */ -#define PHQL_T_NPLACEHOLDER 273 -#define PHQL_T_SPLACEHOLDER 274 -#define PHQL_T_BPLACEHOLDER 277 - -/** Reserved words */ -#define PHQL_T_UPDATE 300 -#define PHQL_T_SET 301 -#define PHQL_T_WHERE 302 -#define PHQL_T_DELETE 303 -#define PHQL_T_FROM 304 -#define PHQL_T_AS 305 -#define PHQL_T_INSERT 306 -#define PHQL_T_INTO 307 -#define PHQL_T_VALUES 308 -#define PHQL_T_SELECT 309 -#define PHQL_T_ORDER 310 -#define PHQL_T_BY 311 -#define PHQL_T_LIMIT 312 -#define PHQL_T_GROUP 313 -#define PHQL_T_HAVING 314 -#define PHQL_T_IN 315 -#define PHQL_T_ON 316 -#define PHQL_T_INNER 317 -#define PHQL_T_JOIN 318 -#define PHQL_T_LEFT 319 -#define PHQL_T_RIGHT 320 -#define PHQL_T_IS 321 -#define PHQL_T_NULL 322 -#define PHQL_T_NOTIN 323 -#define PHQL_T_CROSS 324 -#define PHQL_T_FULL 325 -#define PHQL_T_OUTER 326 -#define PHQL_T_ASC 327 -#define PHQL_T_DESC 328 -#define PHQL_T_OFFSET 329 -#define PHQL_T_DISTINCT 330 -#define PHQL_T_BETWEEN 331 -#define PHQL_T_BETWEEN_NOT 332 -#define PHQL_T_CAST 333 -#define PHQL_T_TRUE 334 -#define PHQL_T_FALSE 335 -#define PHQL_T_CONVERT 336 -#define PHQL_T_USING 337 -#define PHQL_T_ALL 338 -#define PHQL_T_FOR 339 - -/** Special Tokens */ -#define PHQL_T_FCALL 350 -#define PHQL_T_NLIKE 351 -#define PHQL_T_STARALL 352 -#define PHQL_T_DOMAINALL 353 -#define PHQL_T_EXPR 354 -#define PHQL_T_QUALIFIED 355 -#define PHQL_T_ENCLOSED 356 -#define PHQL_T_NILIKE 357 -#define PHQL_T_RAW_QUALIFIED 358 - -#define PHQL_T_INNERJOIN 360 -#define PHQL_T_LEFTJOIN 361 -#define PHQL_T_RIGHTJOIN 362 -#define PHQL_T_CROSSJOIN 363 -#define PHQL_T_FULLJOIN 364 -#define PHQL_T_ISNULL 365 -#define PHQL_T_ISNOTNULL 366 -#define PHQL_T_MINUS 367 - -/** Postgresql Text Search Operators */ -#define PHQL_T_TS_MATCHES 401 -#define PHQL_T_TS_OR 402 -#define PHQL_T_TS_AND 403 -#define PHQL_T_TS_NEGATE 404 -#define PHQL_T_TS_CONTAINS_ANOTHER 405 -#define PHQL_T_TS_CONTAINS_IN 406 - -#define PHQL_T_SUBQUERY 407 -#define PHQL_T_EXISTS 408 - -#define PHQL_T_CASE 409 -#define PHQL_T_WHEN 410 -#define PHQL_T_ELSE 411 -#define PHQL_T_END 412 -#define PHQL_T_THEN 413 -#define PHQL_T_WITH 415 - -/* list of tokens and their names */ -typedef struct _phql_token_names { - char *name; - unsigned int length; - unsigned int code; -} phql_token_names; - -/* active token state */ -typedef struct _phql_scanner_state { - int active_token; - unsigned int start_length; - char* start; - char* end; -} phql_scanner_state; - -/* extra information tokens */ -typedef struct _phql_scanner_token { - char *value; - int opcode; - unsigned int len; -} phql_scanner_token; - -int phql_get_token(phql_scanner_state *s, phql_scanner_token *token); - -extern const phql_token_names phql_tokens[]; - -#endif /* PHALCON_MVC_MODEL_QUERY_SCANNER_H */ diff --git a/c/scanner.re b/c/scanner.re deleted file mode 100644 index 86de875..0000000 --- a/c/scanner.re +++ /dev/null @@ -1,7551 +0,0 @@ - - * - * For the full copyright and license information, please view the - * LICENSE.txt file that was distributed with this source code. - */ - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include "php.h" -#include "php_phalcon.h" - -#include "scanner.h" - -#define YYCTYPE unsigned char -#define YYCURSOR (s->start) -#define YYLIMIT (s->end) -#define YYMARKER q - -int phql_get_token(phql_scanner_state *s, phql_scanner_token *token) { - - char *q = YYCURSOR; - int status = PHQL_SCANNER_RETCODE_IMPOSSIBLE; - - - while (PHQL_SCANNER_RETCODE_IMPOSSIBLE == status) { - - - $yych = 0; - $yyaccept = 0; - $yystate = 0; - while (true) { - switch ($yystate) { - case 0: - $yych = $yyinput[$yycursor]; - $yycursor += 1; - switch ($yych) { - case 0x00: - $yystate = 1; - break 2; - case '\t': - case '\n': - case '\r': - case ' ': - $yystate = 4; - break 2; - case '!': - $yystate = 6; - break 2; - case '"': - $yystate = 8; - break 2; - case '#': - $yystate = 319; - break 2; - case '%': - $yystate = 9; - break 2; - case '&': - $yystate = 10; - break 2; - case '\'': - $yystate = 12; - break 2; - case '(': - $yystate = 13; - break 2; - case ')': - $yystate = 14; - break 2; - case '*': - $yystate = 15; - break 2; - case '+': - $yystate = 16; - break 2; - case ',': - $yystate = 17; - break 2; - case '-': - $yystate = 18; - break 2; - case '.': - $yystate = 19; - break 2; - case '/': - $yystate = 21; - break 2; - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - $yystate = 22; - break 2; - case ':': - $yystate = 24; - break 2; - case '<': - $yystate = 26; - break 2; - case '=': - $yystate = 28; - break 2; - case '>': - $yystate = 29; - break 2; - case '?': - $yystate = 31; - break 2; - case '@': - $yystate = 32; - break 2; - case 'A': - case 'a': - $yystate = 33; - break 2; - case 'B': - case 'b': - $yystate = 35; - break 2; - case 'C': - case 'c': - $yystate = 36; - break 2; - case 'D': - case 'd': - $yystate = 37; - break 2; - case 'E': - case 'e': - $yystate = 38; - break 2; - case 'F': - case 'f': - $yystate = 39; - break 2; - case 'G': - case 'g': - $yystate = 40; - break 2; - case 'H': - case 'h': - $yystate = 42; - break 2; - case 'I': - case 'i': - $yystate = 43; - break 2; - case 'J': - case 'j': - $yystate = 44; - break 2; - case 'K': - case 'M': - case 'P': - case 'Q': - case 'X': - case 'Y': - case 'Z': - case '_': - case 'k': - case 'm': - case 'p': - case 'q': - case 'y': - case 'z': - $yystate = 45; - break 2; - case 'L': - case 'l': - $yystate = 47; - break 2; - case 'N': - case 'n': - $yystate = 48; - break 2; - case 'O': - case 'o': - $yystate = 49; - break 2; - case 'R': - case 'r': - $yystate = 50; - break 2; - case 'S': - case 's': - $yystate = 51; - break 2; - case 'T': - case 't': - $yystate = 52; - break 2; - case 'U': - case 'u': - $yystate = 53; - break 2; - case 'V': - case 'v': - $yystate = 54; - break 2; - case 'W': - case 'w': - $yystate = 55; - break 2; - case '[': - $yystate = 56; - break 2; - case '\\': - $yystate = 57; - break 2; - case '^': - $yystate = 58; - break 2; - case 'x': - $yystate = 59; - break 2; - case '{': - $yystate = 61; - break 2; - case '|': - $yystate = 62; - break 2; - case '~': - $yystate = 64; - break 2; - default: - $yystate = 2; - break 2; - } - case 1: - - status = PHQL_SCANNER_RETCODE_EOF; - break; - - case 2: - $yystate = 3; - break 2; - case 3: - - status = PHQL_SCANNER_RETCODE_ERR; - break; - - case 4: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '\t': - case '\n': - case '\r': - case ' ': - $yycursor += 1; - $yystate = 4; - break 2; - default: - $yystate = 5; - break 2; - } - case 5: - - token->opcode = PHQL_T_IGNORE; - return 0; - - case 6: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '=': - $yycursor += 1; - $yystate = 66; - break 2; - default: - $yystate = 7; - break 2; - } - case 7: - - token->opcode = PHQL_T_NOT; - return 0; - - case 8: - $yyaccept = 0; - $yymarker = $yycursor; - $yych = $yyinput[$yycursor]; - if ($yych <= 0x00) { - $yystate = 3; - break 2; - } - $yystate = 68; - break 2; - case 9: - - token->opcode = PHQL_T_MOD; - return 0; - - case 10: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '&': - $yycursor += 1; - $yystate = 72; - break 2; - default: - $yystate = 11; - break 2; - } - case 11: - - token->opcode = PHQL_T_BITWISE_AND; - return 0; - - case 12: - $yyaccept = 0; - $yymarker = $yycursor; - $yych = $yyinput[$yycursor]; - if ($yych <= 0x00) { - $yystate = 3; - break 2; - } - $yystate = 74; - break 2; - case 13: - - token->opcode = PHQL_T_PARENTHESES_OPEN; - return 0; - - case 14: - - token->opcode = PHQL_T_PARENTHESES_CLOSE; - return 0; - - case 15: - - token->opcode = PHQL_T_MUL; - return 0; - - case 16: - - token->opcode = PHQL_T_ADD; - return 0; - - case 17: - - token->opcode = PHQL_T_COMMA; - return 0; - - case 18: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '>': - $yycursor += 1; - $yystate = 323; - break 2; - default: - $yystate = 324; - break 2; - } - case 19: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - $yycursor += 1; - $yystate = 76; - break 2; - default: - $yystate = 20; - break 2; - } - case 20: - - token->opcode = PHQL_T_DOT; - return 0; - - case 21: - - token->opcode = PHQL_T_DIV; - return 0; - - case 22: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '.': - $yycursor += 1; - $yystate = 76; - break 2; - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - $yycursor += 1; - $yystate = 22; - break 2; - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'x': - $yycursor += 1; - $yystate = 78; - break 2; - default: - $yystate = 23; - break 2; - } - case 23: - - token->opcode = PHQL_T_INTEGER; - token->value = estrndup(q, YYCURSOR - q); - token->len = YYCURSOR - q; - q = YYCURSOR; - return 0; - - case 24: - $yyaccept = 1; - $yymarker = $yycursor; - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '-': - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '_': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - $yycursor += 1; - $yystate = 79; - break 2; - default: - $yystate = 25; - break 2; - } - case 25: - - token->opcode = PHQL_T_COLON; - return 0; - - case 26: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '=': - $yycursor += 1; - $yystate = 80; - break 2; - case '>': - $yycursor += 1; - $yystate = 81; - break 2; - case '@': - $yycursor += 1; - $yystate = 327; - break 2; - default: - $yystate = 27; - break 2; - } - case 27: - - token->opcode = PHQL_T_LESS; - return 0; - - case 28: - - token->opcode = PHQL_T_EQUALS; - return 0; - - case 29: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '=': - $yycursor += 1; - $yystate = 82; - break 2; - default: - $yystate = 30; - break 2; - } - case 30: - - token->opcode = PHQL_T_GREATER; - return 0; - - case 31: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - $yycursor += 1; - $yystate = 83; - break 2; - default: - $yystate = 3; - break 2; - } - case 32: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '>': - $yycursor += 1; - $yystate = 85; - break 2; - case '@': - $yycursor += 1; - $yystate = 86; - break 2; - default: - $yystate = 3; - break 2; - } - case 33: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'G': - case 'g': - $yycursor += 1; - $yystate = 87; - break 2; - case 'L': - case 'l': - $yycursor += 1; - $yystate = 88; - break 2; - case 'N': - case 'n': - $yycursor += 1; - $yystate = 89; - break 2; - case 'S': - case 's': - $yycursor += 1; - $yystate = 90; - break 2; - default: - $yystate = 60; - break 2; - } - case 34: - - token->value = estrndup(q, YYCURSOR - q); - token->len = YYCURSOR - q; - if (token->len > 2 && !memcmp(token->value, "0x", 2)) { - token->opcode = PHQL_T_HINTEGER; - } else { - int i, alpha = 0; - for (i = 0; i < token->len; i++) { - unsigned char ch = token->value[i]; - if (!((ch >= '0') && (ch <= '9'))) { - alpha = 1; - break; - } - } - if (alpha) { - token->opcode = PHQL_T_IDENTIFIER; - } else { - token->opcode = PHQL_T_INTEGER; - } - } - q = YYCURSOR; - return 0; - - case 35: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'E': - case 'e': - $yycursor += 1; - $yystate = 92; - break 2; - case 'Y': - case 'y': - $yycursor += 1; - $yystate = 93; - break 2; - default: - $yystate = 60; - break 2; - } - case 36: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'A': - case 'a': - $yycursor += 1; - $yystate = 95; - break 2; - case 'O': - case 'o': - $yycursor += 1; - $yystate = 96; - break 2; - case 'R': - case 'r': - $yycursor += 1; - $yystate = 97; - break 2; - default: - $yystate = 60; - break 2; - } - case 37: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'E': - case 'e': - $yycursor += 1; - $yystate = 98; - break 2; - case 'I': - case 'i': - $yycursor += 1; - $yystate = 99; - break 2; - default: - $yystate = 60; - break 2; - } - case 38: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'L': - case 'l': - $yycursor += 1; - $yystate = 100; - break 2; - case 'N': - case 'n': - $yycursor += 1; - $yystate = 101; - break 2; - case 'X': - $yycursor += 1; - $yystate = 102; - break 2; - case 'x': - $yycursor += 1; - $yystate = 103; - break 2; - default: - $yystate = 60; - break 2; - } - case 39: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'A': - case 'a': - $yycursor += 1; - $yystate = 104; - break 2; - case 'O': - case 'o': - $yycursor += 1; - $yystate = 105; - break 2; - case 'R': - case 'r': - $yycursor += 1; - $yystate = 106; - break 2; - case 'U': - case 'u': - $yycursor += 1; - $yystate = 107; - break 2; - default: - $yystate = 60; - break 2; - } - case 40: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'R': - case 'r': - $yycursor += 1; - $yystate = 108; - break 2; - default: - $yystate = 46; - break 2; - } - case 41: - - token->opcode = PHQL_T_IDENTIFIER; - if ((YYCURSOR - q) > 1) { - if (q[0] == '\\') { - token->value = estrndup(q + 1, YYCURSOR - q - 1); - token->len = YYCURSOR - q - 1; - } else { - token->value = estrndup(q, YYCURSOR - q); - token->len = YYCURSOR - q; - } - } else { - token->value = estrndup(q, YYCURSOR - q); - token->len = YYCURSOR - q; - } - q = YYCURSOR; - return 0; - - case 42: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'A': - case 'a': - $yycursor += 1; - $yystate = 109; - break 2; - default: - $yystate = 46; - break 2; - } - case 43: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'L': - case 'l': - $yycursor += 1; - $yystate = 110; - break 2; - case 'N': - case 'n': - $yycursor += 1; - $yystate = 111; - break 2; - case 'S': - case 's': - $yycursor += 1; - $yystate = 113; - break 2; - default: - $yystate = 46; - break 2; - } - case 44: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'O': - case 'o': - $yycursor += 1; - $yystate = 115; - break 2; - default: - $yystate = 46; - break 2; - } - case 45: - $yych = $yyinput[$yycursor]; - $yystate = 46; - break 2; - case 46: - switch ($yych) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case ':': - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '\\': - case '_': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - $yycursor += 1; - $yystate = 45; - break 2; - default: - $yystate = 41; - break 2; - } - case 47: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'E': - case 'e': - $yycursor += 1; - $yystate = 116; - break 2; - case 'I': - case 'i': - $yycursor += 1; - $yystate = 117; - break 2; - default: - $yystate = 46; - break 2; - } - case 48: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'O': - case 'o': - $yycursor += 1; - $yystate = 118; - break 2; - case 'U': - case 'u': - $yycursor += 1; - $yystate = 119; - break 2; - default: - $yystate = 46; - break 2; - } - case 49: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'F': - case 'f': - $yycursor += 1; - $yystate = 120; - break 2; - case 'N': - case 'n': - $yycursor += 1; - $yystate = 121; - break 2; - case 'R': - case 'r': - $yycursor += 1; - $yystate = 123; - break 2; - case 'U': - case 'u': - $yycursor += 1; - $yystate = 125; - break 2; - default: - $yystate = 46; - break 2; - } - case 50: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'I': - case 'i': - $yycursor += 1; - $yystate = 126; - break 2; - default: - $yystate = 46; - break 2; - } - case 51: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'E': - case 'e': - $yycursor += 1; - $yystate = 127; - break 2; - default: - $yystate = 46; - break 2; - } - case 52: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'H': - case 'h': - $yycursor += 1; - $yystate = 128; - break 2; - case 'R': - case 'r': - $yycursor += 1; - $yystate = 129; - break 2; - default: - $yystate = 46; - break 2; - } - case 53: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'P': - case 'p': - $yycursor += 1; - $yystate = 130; - break 2; - case 'S': - case 's': - $yycursor += 1; - $yystate = 131; - break 2; - default: - $yystate = 46; - break 2; - } - case 54: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'A': - case 'a': - $yycursor += 1; - $yystate = 132; - break 2; - default: - $yystate = 46; - break 2; - } - case 55: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'H': - case 'h': - $yycursor += 1; - $yystate = 133; - break 2; - case 'I': - case 'i': - $yycursor += 1; - $yystate = 134; - break 2; - default: - $yystate = 46; - break 2; - } - case 56: - $yyaccept = 0; - $yymarker = $yycursor; - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 0x00: - case 0x01: - case 0x02: - case 0x03: - case 0x04: - case 0x05: - case 0x06: - case 0x07: - case 0x08: - case '\t': - case '\n': - case '\v': - case '\f': - case '\r': - case 0x0E: - case 0x0F: - case 0x10: - case 0x11: - case 0x12: - case 0x13: - case 0x14: - case 0x15: - case 0x16: - case 0x17: - case 0x18: - case 0x19: - case 0x1A: - case 0x1B: - case 0x1C: - case 0x1D: - case 0x1E: - case 0x1F: - case '[': - case 0x7F: - $yystate = 3; - break 2; - default: - $yystate = 136; - break 2; - } - case 57: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '_': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - $yycursor += 1; - $yystate = 45; - break 2; - default: - $yystate = 3; - break 2; - } - case 58: - - token->opcode = PHQL_T_BITWISE_XOR; - return 0; - - case 59: - $yych = $yyinput[$yycursor]; - $yystate = 60; - break 2; - case 60: - switch ($yych) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'x': - $yycursor += 1; - $yystate = 59; - break 2; - case ':': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '\\': - case '_': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'y': - case 'z': - $yycursor += 1; - $yystate = 45; - break 2; - default: - $yystate = 34; - break 2; - } - case 61: - $yyaccept = 0; - $yymarker = $yycursor; - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '-': - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case ':': - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '_': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - $yycursor += 1; - $yystate = 140; - break 2; - default: - $yystate = 3; - break 2; - } - case 62: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '|': - $yycursor += 1; - $yystate = 141; - break 2; - default: - $yystate = 63; - break 2; - } - case 63: - - token->opcode = PHQL_T_BITWISE_OR; - return 0; - - case 64: - - token->opcode = PHQL_T_BITWISE_NOT; - return 0; - - case 66: - - token->opcode = PHQL_T_NOTEQUALS; - return 0; - - case 67: - $yych = $yyinput[$yycursor]; - $yystate = 68; - break 2; - case 68: - switch ($yych) { - case 0x00: - $yystate = 69; - break 2; - case '"': - $yycursor += 1; - $yystate = 70; - break 2; - case '\\': - $yycursor += 1; - $yystate = 71; - break 2; - default: - $yycursor += 1; - $yystate = 67; - break 2; - } - case 69: - $yycursor = $yymarker; - switch ($yyaccept) { - case 0: - $yystate = 3; - break 2; - case 1: - $yystate = 25; - break 2; - case 2: - $yystate = 177; - break 2; - default: - $yystate = 139; - break 2; - } - case 70: - - token->opcode = PHQL_T_STRING; - token->value = estrndup(q, YYCURSOR - q - 1); - token->len = YYCURSOR - q - 1; - q = YYCURSOR; - return 0; - - case 71: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '\n': - $yystate = 69; - break 2; - default: - $yycursor += 1; - $yystate = 67; - break 2; - } - case 72: - - token->opcode = PHQL_T_OP_OVERLAPS; - return 0; - - case 73: - $yych = $yyinput[$yycursor]; - $yystate = 74; - break 2; - case 74: - switch ($yych) { - case 0x00: - $yystate = 69; - break 2; - case '\'': - $yycursor += 1; - $yystate = 70; - break 2; - case '\\': - $yycursor += 1; - $yystate = 75; - break 2; - default: - $yycursor += 1; - $yystate = 73; - break 2; - } - case 75: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '\n': - $yystate = 69; - break 2; - default: - $yycursor += 1; - $yystate = 73; - break 2; - } - case 76: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - $yycursor += 1; - $yystate = 76; - break 2; - default: - $yystate = 77; - break 2; - } - case 77: - - token->opcode = PHQL_T_DOUBLE; - token->value = estrndup(q, YYCURSOR - q); - token->len = YYCURSOR - q; - q = YYCURSOR; - return 0; - - case 78: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'x': - $yycursor += 1; - $yystate = 78; - break 2; - default: - $yystate = 34; - break 2; - } - case 79: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '-': - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '_': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - $yycursor += 1; - $yystate = 79; - break 2; - case ':': - $yycursor += 1; - $yystate = 142; - break 2; - default: - $yystate = 69; - break 2; - } - case 80: - - token->opcode = PHQL_T_LESSEQUAL; - return 0; - - case 81: - - token->opcode = PHQL_T_NOTEQUALS; - return 0; - - case 82: - - token->opcode = PHQL_T_GREATEREQUAL; - return 0; - - case 83: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - $yycursor += 1; - $yystate = 83; - break 2; - default: - $yystate = 84; - break 2; - } - case 84: - - token->opcode = PHQL_T_NPLACEHOLDER; - token->value = estrndup(q, YYCURSOR - q); - token->len = YYCURSOR - q; - q = YYCURSOR; - return 0; - - case 85: - - token->opcode = PHQL_T_OP_CONTAINS; - return 0; - - case 86: - - token->opcode = PHQL_T_OP_MATCHES; - return 0; - - case 87: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'A': - case 'a': - $yycursor += 1; - $yystate = 143; - break 2; - default: - $yystate = 46; - break 2; - } - case 88: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'L': - case 'l': - $yycursor += 1; - $yystate = 144; - break 2; - default: - $yystate = 46; - break 2; - } - case 89: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'D': - case 'd': - $yycursor += 1; - $yystate = 146; - break 2; - default: - $yystate = 46; - break 2; - } - case 90: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case ':': - case 'A': - case 'B': - case 'D': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '\\': - case '_': - case 'a': - case 'b': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - $yycursor += 1; - $yystate = 45; - break 2; - case 'C': - case 'c': - $yycursor += 1; - $yystate = 148; - break 2; - default: - $yystate = 91; - break 2; - } - case 91: - - token->opcode = PHQL_T_AS; - return 0; - - case 92: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'T': - case 't': - $yycursor += 1; - $yystate = 150; - break 2; - default: - $yystate = 60; - break 2; - } - case 93: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case ':': - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '\\': - case '_': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - $yycursor += 1; - $yystate = 45; - break 2; - default: - $yystate = 94; - break 2; - } - case 94: - - token->opcode = PHQL_T_BY; - return 0; - - case 95: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'S': - case 's': - $yycursor += 1; - $yystate = 151; - break 2; - default: - $yystate = 60; - break 2; - } - case 96: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'N': - case 'n': - $yycursor += 1; - $yystate = 152; - break 2; - default: - $yystate = 46; - break 2; - } - case 97: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'O': - case 'o': - $yycursor += 1; - $yystate = 153; - break 2; - default: - $yystate = 46; - break 2; - } - case 98: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'L': - case 'l': - $yycursor += 1; - $yystate = 154; - break 2; - case 'S': - case 's': - $yycursor += 1; - $yystate = 155; - break 2; - default: - $yystate = 60; - break 2; - } - case 99: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'S': - case 's': - $yycursor += 1; - $yystate = 156; - break 2; - default: - $yystate = 46; - break 2; - } - case 100: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'S': - case 's': - $yycursor += 1; - $yystate = 157; - break 2; - default: - $yystate = 46; - break 2; - } - case 101: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'D': - case 'd': - $yycursor += 1; - $yystate = 158; - break 2; - default: - $yystate = 46; - break 2; - } - case 102: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'I': - case 'i': - $yycursor += 1; - $yystate = 160; - break 2; - default: - $yystate = 46; - break 2; - } - case 103: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'I': - case 'i': - $yycursor += 1; - $yystate = 160; - break 2; - default: - $yystate = 60; - break 2; - } - case 104: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'L': - case 'l': - $yycursor += 1; - $yystate = 161; - break 2; - default: - $yystate = 60; - break 2; - } - case 105: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'R': - case 'r': - $yycursor += 1; - $yystate = 162; - break 2; - default: - $yystate = 46; - break 2; - } - case 106: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'O': - case 'o': - $yycursor += 1; - $yystate = 164; - break 2; - default: - $yystate = 46; - break 2; - } - case 107: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'L': - case 'l': - $yycursor += 1; - $yystate = 165; - break 2; - default: - $yystate = 46; - break 2; - } - case 108: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'O': - case 'o': - $yycursor += 1; - $yystate = 166; - break 2; - default: - $yystate = 46; - break 2; - } - case 109: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'V': - case 'v': - $yycursor += 1; - $yystate = 167; - break 2; - default: - $yystate = 46; - break 2; - } - case 110: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'I': - case 'i': - $yycursor += 1; - $yystate = 168; - break 2; - default: - $yystate = 46; - break 2; - } - case 111: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case ':': - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '\\': - case '_': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'o': - case 'p': - case 'q': - case 'r': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - $yycursor += 1; - $yystate = 45; - break 2; - case 'N': - case 'n': - $yycursor += 1; - $yystate = 169; - break 2; - case 'S': - case 's': - $yycursor += 1; - $yystate = 170; - break 2; - case 'T': - case 't': - $yycursor += 1; - $yystate = 171; - break 2; - default: - $yystate = 112; - break 2; - } - case 112: - - token->opcode = PHQL_T_IN; - return 0; - - case 113: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case ':': - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '\\': - case '_': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - $yycursor += 1; - $yystate = 45; - break 2; - default: - $yystate = 114; - break 2; - } - case 114: - - token->opcode = PHQL_T_IS; - return 0; - - case 115: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'I': - case 'i': - $yycursor += 1; - $yystate = 172; - break 2; - default: - $yystate = 46; - break 2; - } - case 116: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'F': - case 'f': - $yycursor += 1; - $yystate = 173; - break 2; - default: - $yystate = 46; - break 2; - } - case 117: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'K': - case 'k': - $yycursor += 1; - $yystate = 174; - break 2; - case 'M': - case 'm': - $yycursor += 1; - $yystate = 175; - break 2; - default: - $yystate = 46; - break 2; - } - case 118: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'T': - case 't': - $yycursor += 1; - $yystate = 176; - break 2; - default: - $yystate = 46; - break 2; - } - case 119: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'L': - case 'l': - $yycursor += 1; - $yystate = 178; - break 2; - default: - $yystate = 46; - break 2; - } - case 120: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'F': - case 'f': - $yycursor += 1; - $yystate = 179; - break 2; - default: - $yystate = 46; - break 2; - } - case 121: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case ':': - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '\\': - case '_': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - $yycursor += 1; - $yystate = 45; - break 2; - default: - $yystate = 122; - break 2; - } - case 122: - - token->opcode = PHQL_T_ON; - return 0; - - case 123: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case ':': - case 'A': - case 'B': - case 'C': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '\\': - case '_': - case 'a': - case 'b': - case 'c': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - $yycursor += 1; - $yystate = 45; - break 2; - case 'D': - case 'd': - $yycursor += 1; - $yystate = 180; - break 2; - default: - $yystate = 124; - break 2; - } - case 124: - - token->opcode = PHQL_T_OR; - return 0; - - case 125: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'T': - case 't': - $yycursor += 1; - $yystate = 181; - break 2; - default: - $yystate = 46; - break 2; - } - case 126: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'G': - case 'g': - $yycursor += 1; - $yystate = 182; - break 2; - default: - $yystate = 46; - break 2; - } - case 127: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'L': - case 'l': - $yycursor += 1; - $yystate = 183; - break 2; - case 'T': - case 't': - $yycursor += 1; - $yystate = 184; - break 2; - default: - $yystate = 46; - break 2; - } - case 128: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'E': - case 'e': - $yycursor += 1; - $yystate = 186; - break 2; - default: - $yystate = 46; - break 2; - } - case 129: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'U': - case 'u': - $yycursor += 1; - $yystate = 187; - break 2; - default: - $yystate = 46; - break 2; - } - case 130: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'D': - case 'd': - $yycursor += 1; - $yystate = 188; - break 2; - default: - $yystate = 46; - break 2; - } - case 131: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'I': - case 'i': - $yycursor += 1; - $yystate = 189; - break 2; - default: - $yystate = 46; - break 2; - } - case 132: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'L': - case 'l': - $yycursor += 1; - $yystate = 190; - break 2; - default: - $yystate = 46; - break 2; - } - case 133: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'E': - case 'e': - $yycursor += 1; - $yystate = 191; - break 2; - default: - $yystate = 46; - break 2; - } - case 134: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'T': - case 't': - $yycursor += 1; - $yystate = 192; - break 2; - default: - $yystate = 46; - break 2; - } - case 135: - $yych = $yyinput[$yycursor]; - $yystate = 136; - break 2; - case 136: - switch ($yych) { - case 0x00: - case 0x01: - case 0x02: - case 0x03: - case 0x04: - case 0x05: - case 0x06: - case 0x07: - case 0x08: - case '\t': - case '\n': - case '\v': - case '\f': - case '\r': - case 0x0E: - case 0x0F: - case 0x10: - case 0x11: - case 0x12: - case 0x13: - case 0x14: - case 0x15: - case 0x16: - case 0x17: - case 0x18: - case 0x19: - case 0x1A: - case 0x1B: - case 0x1C: - case 0x1D: - case 0x1E: - case 0x1F: - case '[': - case 0x7F: - $yystate = 69; - break 2; - case '\\': - $yycursor += 1; - $yystate = 137; - break 2; - case ']': - $yycursor += 1; - $yystate = 138; - break 2; - default: - $yycursor += 1; - $yystate = 135; - break 2; - } - case 137: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 0x00: - case 0x01: - case 0x02: - case 0x03: - case 0x04: - case 0x05: - case 0x06: - case 0x07: - case 0x08: - case '\t': - case '\n': - case '\v': - case '\f': - case '\r': - case 0x0E: - case 0x0F: - case 0x10: - case 0x11: - case 0x12: - case 0x13: - case 0x14: - case 0x15: - case 0x16: - case 0x17: - case 0x18: - case 0x19: - case 0x1A: - case 0x1B: - case 0x1C: - case 0x1D: - case 0x1E: - case 0x1F: - case 0x7F: - $yystate = 69; - break 2; - case '\\': - $yycursor += 1; - $yystate = 137; - break 2; - case ']': - $yycursor += 1; - $yystate = 193; - break 2; - default: - $yycursor += 1; - $yystate = 135; - break 2; - } - case 138: - $yystate = 139; - break 2; - case 139: - - token->opcode = PHQL_T_IDENTIFIER; - token->value = estrndup(q, YYCURSOR - q - 1); - token->len = YYCURSOR - q - 1; - q = YYCURSOR; - return 0; - - case 140: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '-': - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case ':': - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '_': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - $yycursor += 1; - $yystate = 140; - break 2; - case '}': - $yycursor += 1; - $yystate = 194; - break 2; - default: - $yystate = 69; - break 2; - } - case 141: - - token->opcode = PHQL_T_OP_CONCAT; - return 0; - - case 142: - - token->opcode = PHQL_T_SPLACEHOLDER; - token->value = estrndup(q, YYCURSOR - q - 1); - token->len = YYCURSOR - q - 1; - q = YYCURSOR; - return 0; - - case 143: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'I': - case 'i': - $yycursor += 1; - $yystate = 195; - break 2; - default: - $yystate = 46; - break 2; - } - case 144: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case ':': - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '\\': - case '_': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - $yycursor += 1; - $yystate = 45; - break 2; - default: - $yystate = 145; - break 2; - } - case 145: - - token->opcode = PHQL_T_ALL; - return 0; - - case 146: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case ':': - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '\\': - case '_': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - $yycursor += 1; - $yystate = 45; - break 2; - default: - $yystate = 147; - break 2; - } - case 147: - - token->opcode = PHQL_T_AND; - return 0; - - case 148: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case ':': - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '\\': - case '_': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - $yycursor += 1; - $yystate = 45; - break 2; - default: - $yystate = 149; - break 2; - } - case 149: - - token->opcode = PHQL_T_ASC; - return 0; - - case 150: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'W': - case 'w': - $yycursor += 1; - $yystate = 196; - break 2; - default: - $yystate = 46; - break 2; - } - case 151: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'E': - case 'e': - $yycursor += 1; - $yystate = 197; - break 2; - case 'T': - case 't': - $yycursor += 1; - $yystate = 199; - break 2; - default: - $yystate = 46; - break 2; - } - case 152: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'V': - case 'v': - $yycursor += 1; - $yystate = 201; - break 2; - default: - $yystate = 46; - break 2; - } - case 153: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'S': - case 's': - $yycursor += 1; - $yystate = 202; - break 2; - default: - $yystate = 46; - break 2; - } - case 154: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'E': - case 'e': - $yycursor += 1; - $yystate = 203; - break 2; - default: - $yystate = 46; - break 2; - } - case 155: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'C': - case 'c': - $yycursor += 1; - $yystate = 204; - break 2; - default: - $yystate = 46; - break 2; - } - case 156: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'T': - case 't': - $yycursor += 1; - $yystate = 206; - break 2; - default: - $yystate = 46; - break 2; - } - case 157: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'E': - case 'e': - $yycursor += 1; - $yystate = 207; - break 2; - default: - $yystate = 46; - break 2; - } - case 158: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case ':': - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '\\': - case '_': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - $yycursor += 1; - $yystate = 45; - break 2; - default: - $yystate = 159; - break 2; - } - case 159: - - token->opcode = PHQL_T_END; - return 0; - - case 160: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'S': - case 's': - $yycursor += 1; - $yystate = 209; - break 2; - default: - $yystate = 46; - break 2; - } - case 161: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'S': - case 's': - $yycursor += 1; - $yystate = 210; - break 2; - default: - $yystate = 46; - break 2; - } - case 162: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case ':': - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '\\': - case '_': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - $yycursor += 1; - $yystate = 45; - break 2; - default: - $yystate = 163; - break 2; - } - case 163: - - token->opcode = PHQL_T_FOR; - return 0; - - case 164: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'M': - case 'm': - $yycursor += 1; - $yystate = 211; - break 2; - default: - $yystate = 46; - break 2; - } - case 165: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'L': - case 'l': - $yycursor += 1; - $yystate = 213; - break 2; - default: - $yystate = 46; - break 2; - } - case 166: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'U': - case 'u': - $yycursor += 1; - $yystate = 215; - break 2; - default: - $yystate = 46; - break 2; - } - case 167: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'I': - case 'i': - $yycursor += 1; - $yystate = 216; - break 2; - default: - $yystate = 46; - break 2; - } - case 168: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'K': - case 'k': - $yycursor += 1; - $yystate = 217; - break 2; - default: - $yystate = 46; - break 2; - } - case 169: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'E': - case 'e': - $yycursor += 1; - $yystate = 218; - break 2; - default: - $yystate = 46; - break 2; - } - case 170: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'E': - case 'e': - $yycursor += 1; - $yystate = 219; - break 2; - default: - $yystate = 46; - break 2; - } - case 171: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'O': - case 'o': - $yycursor += 1; - $yystate = 220; - break 2; - default: - $yystate = 46; - break 2; - } - case 172: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'N': - case 'n': - $yycursor += 1; - $yystate = 222; - break 2; - default: - $yystate = 46; - break 2; - } - case 173: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'T': - case 't': - $yycursor += 1; - $yystate = 224; - break 2; - default: - $yystate = 46; - break 2; - } - case 174: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'E': - case 'e': - $yycursor += 1; - $yystate = 226; - break 2; - default: - $yystate = 46; - break 2; - } - case 175: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'I': - case 'i': - $yycursor += 1; - $yystate = 228; - break 2; - default: - $yystate = 46; - break 2; - } - case 176: - $yyaccept = 2; - $yymarker = $yycursor; - $yych = $yyinput[$yycursor]; - switch ($yych) { - case ' ': - $yycursor += 1; - $yystate = 229; - break 2; - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case ':': - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '\\': - case '_': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - $yycursor += 1; - $yystate = 45; - break 2; - default: - $yystate = 177; - break 2; - } - case 177: - - token->opcode = PHQL_T_NOT; - return 0; - - case 178: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'L': - case 'l': - $yycursor += 1; - $yystate = 230; - break 2; - default: - $yystate = 46; - break 2; - } - case 179: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'S': - case 's': - $yycursor += 1; - $yystate = 232; - break 2; - default: - $yystate = 46; - break 2; - } - case 180: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'E': - case 'e': - $yycursor += 1; - $yystate = 233; - break 2; - default: - $yystate = 46; - break 2; - } - case 181: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'E': - case 'e': - $yycursor += 1; - $yystate = 234; - break 2; - default: - $yystate = 46; - break 2; - } - case 182: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'H': - case 'h': - $yycursor += 1; - $yystate = 235; - break 2; - default: - $yystate = 46; - break 2; - } - case 183: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'E': - case 'e': - $yycursor += 1; - $yystate = 236; - break 2; - default: - $yystate = 46; - break 2; - } - case 184: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case ':': - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '\\': - case '_': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - $yycursor += 1; - $yystate = 45; - break 2; - default: - $yystate = 185; - break 2; - } - case 185: - - token->opcode = PHQL_T_SET; - return 0; - - case 186: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'N': - case 'n': - $yycursor += 1; - $yystate = 237; - break 2; - default: - $yystate = 46; - break 2; - } - case 187: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'E': - case 'e': - $yycursor += 1; - $yystate = 239; - break 2; - default: - $yystate = 46; - break 2; - } - case 188: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'A': - case 'a': - $yycursor += 1; - $yystate = 241; - break 2; - default: - $yystate = 46; - break 2; - } - case 189: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'N': - case 'n': - $yycursor += 1; - $yystate = 242; - break 2; - default: - $yystate = 46; - break 2; - } - case 190: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'U': - case 'u': - $yycursor += 1; - $yystate = 243; - break 2; - default: - $yystate = 46; - break 2; - } - case 191: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'N': - case 'n': - $yycursor += 1; - $yystate = 244; - break 2; - case 'R': - case 'r': - $yycursor += 1; - $yystate = 246; - break 2; - default: - $yystate = 46; - break 2; - } - case 192: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'H': - case 'h': - $yycursor += 1; - $yystate = 247; - break 2; - default: - $yystate = 46; - break 2; - } - case 193: - $yyaccept = 3; - $yymarker = $yycursor; - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 0x00: - case 0x01: - case 0x02: - case 0x03: - case 0x04: - case 0x05: - case 0x06: - case 0x07: - case 0x08: - case '\t': - case '\n': - case '\v': - case '\f': - case '\r': - case 0x0E: - case 0x0F: - case 0x10: - case 0x11: - case 0x12: - case 0x13: - case 0x14: - case 0x15: - case 0x16: - case 0x17: - case 0x18: - case 0x19: - case 0x1A: - case 0x1B: - case 0x1C: - case 0x1D: - case 0x1E: - case 0x1F: - case '[': - case 0x7F: - $yystate = 139; - break 2; - case '\\': - $yycursor += 1; - $yystate = 137; - break 2; - case ']': - $yycursor += 1; - $yystate = 138; - break 2; - default: - $yycursor += 1; - $yystate = 135; - break 2; - } - case 194: - - token->opcode = PHQL_T_BPLACEHOLDER; - token->value = estrndup(q, YYCURSOR - q - 1); - token->len = YYCURSOR - q - 1; - q = YYCURSOR; - return 0; - - case 195: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'N': - case 'n': - $yycursor += 1; - $yystate = 249; - break 2; - default: - $yystate = 46; - break 2; - } - case 196: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'E': - case 'e': - $yycursor += 1; - $yystate = 250; - break 2; - default: - $yystate = 46; - break 2; - } - case 197: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case ':': - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '\\': - case '_': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - $yycursor += 1; - $yystate = 45; - break 2; - default: - $yystate = 198; - break 2; - } - case 198: - - token->opcode = PHQL_T_CASE; - return 0; - - case 199: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case ':': - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '\\': - case '_': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - $yycursor += 1; - $yystate = 45; - break 2; - default: - $yystate = 200; - break 2; - } - case 200: - - token->opcode = PHQL_T_CAST; - return 0; - - case 201: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'E': - case 'e': - $yycursor += 1; - $yystate = 251; - break 2; - default: - $yystate = 46; - break 2; - } - case 202: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'S': - case 's': - $yycursor += 1; - $yystate = 252; - break 2; - default: - $yystate = 46; - break 2; - } - case 203: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'T': - case 't': - $yycursor += 1; - $yystate = 254; - break 2; - default: - $yystate = 46; - break 2; - } - case 204: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case ':': - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '\\': - case '_': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - $yycursor += 1; - $yystate = 45; - break 2; - default: - $yystate = 205; - break 2; - } - case 205: - - token->opcode = PHQL_T_DESC; - return 0; - - case 206: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'I': - case 'i': - $yycursor += 1; - $yystate = 255; - break 2; - default: - $yystate = 46; - break 2; - } - case 207: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case ':': - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '\\': - case '_': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - $yycursor += 1; - $yystate = 45; - break 2; - default: - $yystate = 208; - break 2; - } - case 208: - - token->opcode = PHQL_T_ELSE; - return 0; - - case 209: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'T': - case 't': - $yycursor += 1; - $yystate = 256; - break 2; - default: - $yystate = 46; - break 2; - } - case 210: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'E': - case 'e': - $yycursor += 1; - $yystate = 257; - break 2; - default: - $yystate = 46; - break 2; - } - case 211: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case ':': - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '\\': - case '_': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - $yycursor += 1; - $yystate = 45; - break 2; - default: - $yystate = 212; - break 2; - } - case 212: - - token->opcode = PHQL_T_FROM; - return 0; - - case 213: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case ':': - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '\\': - case '_': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - $yycursor += 1; - $yystate = 45; - break 2; - default: - $yystate = 214; - break 2; - } - case 214: - - token->opcode = PHQL_T_FULL; - return 0; - - case 215: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'P': - case 'p': - $yycursor += 1; - $yystate = 259; - break 2; - default: - $yystate = 46; - break 2; - } - case 216: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'N': - case 'n': - $yycursor += 1; - $yystate = 261; - break 2; - default: - $yystate = 46; - break 2; - } - case 217: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'E': - case 'e': - $yycursor += 1; - $yystate = 262; - break 2; - default: - $yystate = 46; - break 2; - } - case 218: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'R': - case 'r': - $yycursor += 1; - $yystate = 264; - break 2; - default: - $yystate = 46; - break 2; - } - case 219: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'R': - case 'r': - $yycursor += 1; - $yystate = 266; - break 2; - default: - $yystate = 46; - break 2; - } - case 220: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case ':': - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '\\': - case '_': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - $yycursor += 1; - $yystate = 45; - break 2; - default: - $yystate = 221; - break 2; - } - case 221: - - token->opcode = PHQL_T_INTO; - return 0; - - case 222: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case ':': - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '\\': - case '_': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - $yycursor += 1; - $yystate = 45; - break 2; - default: - $yystate = 223; - break 2; - } - case 223: - - token->opcode = PHQL_T_JOIN; - return 0; - - case 224: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case ':': - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '\\': - case '_': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - $yycursor += 1; - $yystate = 45; - break 2; - default: - $yystate = 225; - break 2; - } - case 225: - - token->opcode = PHQL_T_LEFT; - return 0; - - case 226: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case ':': - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '\\': - case '_': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - $yycursor += 1; - $yystate = 45; - break 2; - default: - $yystate = 227; - break 2; - } - case 227: - - token->opcode = PHQL_T_LIKE; - return 0; - - case 228: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'T': - case 't': - $yycursor += 1; - $yystate = 267; - break 2; - default: - $yystate = 46; - break 2; - } - case 229: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'B': - case 'b': - $yycursor += 1; - $yystate = 269; - break 2; - default: - $yystate = 69; - break 2; - } - case 230: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case ':': - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '\\': - case '_': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - $yycursor += 1; - $yystate = 45; - break 2; - default: - $yystate = 231; - break 2; - } - case 231: - - token->opcode = PHQL_T_NULL; - return 0; - - case 232: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'E': - case 'e': - $yycursor += 1; - $yystate = 270; - break 2; - default: - $yystate = 46; - break 2; - } - case 233: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'R': - case 'r': - $yycursor += 1; - $yystate = 271; - break 2; - default: - $yystate = 46; - break 2; - } - case 234: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'R': - case 'r': - $yycursor += 1; - $yystate = 273; - break 2; - default: - $yystate = 46; - break 2; - } - case 235: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'T': - case 't': - $yycursor += 1; - $yystate = 275; - break 2; - default: - $yystate = 46; - break 2; - } - case 236: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'C': - case 'c': - $yycursor += 1; - $yystate = 277; - break 2; - default: - $yystate = 46; - break 2; - } - case 237: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case ':': - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '\\': - case '_': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - $yycursor += 1; - $yystate = 45; - break 2; - default: - $yystate = 238; - break 2; - } - case 238: - - token->opcode = PHQL_T_THEN; - return 0; - - case 239: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case ':': - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '\\': - case '_': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - $yycursor += 1; - $yystate = 45; - break 2; - default: - $yystate = 240; - break 2; - } - case 240: - - token->opcode = PHQL_T_TRUE; - return 0; - - case 241: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'T': - case 't': - $yycursor += 1; - $yystate = 278; - break 2; - default: - $yystate = 46; - break 2; - } - case 242: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'G': - case 'g': - $yycursor += 1; - $yystate = 279; - break 2; - default: - $yystate = 46; - break 2; - } - case 243: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'E': - case 'e': - $yycursor += 1; - $yystate = 281; - break 2; - default: - $yystate = 46; - break 2; - } - case 244: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case ':': - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '\\': - case '_': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - $yycursor += 1; - $yystate = 45; - break 2; - default: - $yystate = 245; - break 2; - } - case 245: - - token->opcode = PHQL_T_WHEN; - return 0; - - case 246: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'E': - case 'e': - $yycursor += 1; - $yystate = 282; - break 2; - default: - $yystate = 46; - break 2; - } - case 247: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case ':': - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '\\': - case '_': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - $yycursor += 1; - $yystate = 45; - break 2; - default: - $yystate = 248; - break 2; - } - case 248: - - token->opcode = PHQL_T_WITH; - return 0; - - case 249: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'S': - case 's': - $yycursor += 1; - $yystate = 284; - break 2; - default: - $yystate = 46; - break 2; - } - case 250: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'E': - case 'e': - $yycursor += 1; - $yystate = 285; - break 2; - default: - $yystate = 46; - break 2; - } - case 251: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'R': - case 'r': - $yycursor += 1; - $yystate = 286; - break 2; - default: - $yystate = 46; - break 2; - } - case 252: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case ':': - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '\\': - case '_': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - $yycursor += 1; - $yystate = 45; - break 2; - default: - $yystate = 253; - break 2; - } - case 253: - - token->opcode = PHQL_T_CROSS; - return 0; - - case 254: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'E': - case 'e': - $yycursor += 1; - $yystate = 287; - break 2; - default: - $yystate = 46; - break 2; - } - case 255: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'N': - case 'n': - $yycursor += 1; - $yystate = 289; - break 2; - default: - $yystate = 46; - break 2; - } - case 256: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'S': - case 's': - $yycursor += 1; - $yystate = 290; - break 2; - default: - $yystate = 46; - break 2; - } - case 257: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case ':': - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '\\': - case '_': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - $yycursor += 1; - $yystate = 45; - break 2; - default: - $yystate = 258; - break 2; - } - case 258: - - token->opcode = PHQL_T_FALSE; - return 0; - - case 259: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case ':': - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '\\': - case '_': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - $yycursor += 1; - $yystate = 45; - break 2; - default: - $yystate = 260; - break 2; - } - case 260: - - token->opcode = PHQL_T_GROUP; - return 0; - - case 261: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'G': - case 'g': - $yycursor += 1; - $yystate = 292; - break 2; - default: - $yystate = 46; - break 2; - } - case 262: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case ':': - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '\\': - case '_': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - $yycursor += 1; - $yystate = 45; - break 2; - default: - $yystate = 263; - break 2; - } - case 263: - - token->opcode = PHQL_T_ILIKE; - return 0; - - case 264: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case ':': - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '\\': - case '_': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - $yycursor += 1; - $yystate = 45; - break 2; - default: - $yystate = 265; - break 2; - } - case 265: - - token->opcode = PHQL_T_INNER; - return 0; - - case 266: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'T': - case 't': - $yycursor += 1; - $yystate = 294; - break 2; - default: - $yystate = 46; - break 2; - } - case 267: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case ':': - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '\\': - case '_': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - $yycursor += 1; - $yystate = 45; - break 2; - default: - $yystate = 268; - break 2; - } - case 268: - - token->opcode = PHQL_T_LIMIT; - return 0; - - case 269: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'E': - case 'e': - $yycursor += 1; - $yystate = 296; - break 2; - default: - $yystate = 69; - break 2; - } - case 270: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'T': - case 't': - $yycursor += 1; - $yystate = 297; - break 2; - default: - $yystate = 46; - break 2; - } - case 271: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case ':': - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '\\': - case '_': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - $yycursor += 1; - $yystate = 45; - break 2; - default: - $yystate = 272; - break 2; - } - case 272: - - token->opcode = PHQL_T_ORDER; - return 0; - - case 273: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case ':': - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '\\': - case '_': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - $yycursor += 1; - $yystate = 45; - break 2; - default: - $yystate = 274; - break 2; - } - case 274: - - token->opcode = PHQL_T_OUTER; - return 0; - - case 275: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case ':': - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '\\': - case '_': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - $yycursor += 1; - $yystate = 45; - break 2; - default: - $yystate = 276; - break 2; - } - case 276: - - token->opcode = PHQL_T_RIGHT; - return 0; - - case 277: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'T': - case 't': - $yycursor += 1; - $yystate = 299; - break 2; - default: - $yystate = 46; - break 2; - } - case 278: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'E': - case 'e': - $yycursor += 1; - $yystate = 301; - break 2; - default: - $yystate = 46; - break 2; - } - case 279: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case ':': - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '\\': - case '_': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - $yycursor += 1; - $yystate = 45; - break 2; - default: - $yystate = 280; - break 2; - } - case 280: - - token->opcode = PHQL_T_USING; - return 0; - - case 281: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'S': - case 's': - $yycursor += 1; - $yystate = 303; - break 2; - default: - $yystate = 46; - break 2; - } - case 282: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case ':': - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '\\': - case '_': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - $yycursor += 1; - $yystate = 45; - break 2; - default: - $yystate = 283; - break 2; - } - case 283: - - token->opcode = PHQL_T_WHERE; - return 0; - - case 284: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'T': - case 't': - $yycursor += 1; - $yystate = 305; - break 2; - default: - $yystate = 46; - break 2; - } - case 285: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'N': - case 'n': - $yycursor += 1; - $yystate = 307; - break 2; - default: - $yystate = 46; - break 2; - } - case 286: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'T': - case 't': - $yycursor += 1; - $yystate = 309; - break 2; - default: - $yystate = 46; - break 2; - } - case 287: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case ':': - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '\\': - case '_': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - $yycursor += 1; - $yystate = 45; - break 2; - default: - $yystate = 288; - break 2; - } - case 288: - - token->opcode = PHQL_T_DELETE; - return 0; - - case 289: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'C': - case 'c': - $yycursor += 1; - $yystate = 311; - break 2; - default: - $yystate = 46; - break 2; - } - case 290: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case ':': - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '\\': - case '_': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - $yycursor += 1; - $yystate = 45; - break 2; - default: - $yystate = 291; - break 2; - } - case 291: - - token->opcode = PHQL_T_EXISTS; - return 0; - - case 292: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case ':': - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '\\': - case '_': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - $yycursor += 1; - $yystate = 45; - break 2; - default: - $yystate = 293; - break 2; - } - case 293: - - token->opcode = PHQL_T_HAVING; - return 0; - - case 294: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case ':': - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '\\': - case '_': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - $yycursor += 1; - $yystate = 45; - break 2; - default: - $yystate = 295; - break 2; - } - case 295: - - token->opcode = PHQL_T_INSERT; - return 0; - - case 296: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'T': - case 't': - $yycursor += 1; - $yystate = 312; - break 2; - default: - $yystate = 69; - break 2; - } - case 297: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case ':': - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '\\': - case '_': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - $yycursor += 1; - $yystate = 45; - break 2; - default: - $yystate = 298; - break 2; - } - case 298: - - token->opcode = PHQL_T_OFFSET; - return 0; - - case 299: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case ':': - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '\\': - case '_': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - $yycursor += 1; - $yystate = 45; - break 2; - default: - $yystate = 300; - break 2; - } - case 300: - - token->opcode = PHQL_T_SELECT; - return 0; - - case 301: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case ':': - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '\\': - case '_': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - $yycursor += 1; - $yystate = 45; - break 2; - default: - $yystate = 302; - break 2; - } - case 302: - - token->opcode = PHQL_T_UPDATE; - return 0; - - case 303: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case ':': - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '\\': - case '_': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - $yycursor += 1; - $yystate = 45; - break 2; - default: - $yystate = 304; - break 2; - } - case 304: - - token->opcode = PHQL_T_VALUES; - return 0; - - case 305: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case ':': - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '\\': - case '_': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - $yycursor += 1; - $yystate = 45; - break 2; - default: - $yystate = 306; - break 2; - } - case 306: - - token->opcode = PHQL_T_AGAINST; - return 0; - - case 307: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case ':': - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '\\': - case '_': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - $yycursor += 1; - $yystate = 45; - break 2; - default: - $yystate = 308; - break 2; - } - case 308: - - token->opcode = PHQL_T_BETWEEN; - return 0; - - case 309: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case ':': - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '\\': - case '_': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - $yycursor += 1; - $yystate = 45; - break 2; - default: - $yystate = 310; - break 2; - } - case 310: - - token->opcode = PHQL_T_CONVERT; - return 0; - - case 311: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'T': - case 't': - $yycursor += 1; - $yystate = 313; - break 2; - default: - $yystate = 46; - break 2; - } - case 312: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'W': - case 'w': - $yycursor += 1; - $yystate = 315; - break 2; - default: - $yystate = 69; - break 2; - } - case 313: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case ':': - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '\\': - case '_': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - $yycursor += 1; - $yystate = 45; - break 2; - default: - $yystate = 314; - break 2; - } - case 314: - - token->opcode = PHQL_T_DISTINCT; - return 0; - - case 315: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'E': - case 'e': - $yycursor += 1; - $yystate = 316; - break 2; - default: - $yystate = 69; - break 2; - } - case 316: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'E': - case 'e': - $yycursor += 1; - $yystate = 317; - break 2; - default: - $yystate = 69; - break 2; - } - case 317: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'N': - case 'n': - $yycursor += 1; - $yystate = 318; - break 2; - default: - $yystate = 69; - break 2; - } - case 318: - - token->opcode = PHQL_T_BETWEEN_NOT; - return 0; - - case 319: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '>': - $yycursor += 1; - $yystate = 320; - break 2; - default: - $yystate = 3; - break 2; - } - case 320: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '>': - $yycursor += 1; - $yystate = 321; - break 2; - default: - $yystate = 322; - break 2; - } - case 321: - - token->opcode = PHQL_T_OP_JSON_PATH_TEXT; - return 0; - - case 322: - - token->opcode = PHQL_T_OP_JSON_PATH; - return 0; - - case 323: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '>': - $yycursor += 1; - $yystate = 325; - break 2; - default: - $yystate = 326; - break 2; - } - case 324: - - token->opcode = PHQL_T_SUB; - return 0; - - case 325: - - token->opcode = PHQL_T_OP_JSON_GET_TEXT; - return 0; - - case 326: - - token->opcode = PHQL_T_OP_JSON_GET; - return 0; - - case 327: - - token->opcode = PHQL_T_OP_CONTAINED; - return 0; - - default: - throw new \Exception("internal lexer error"); - } - } - - } - - return status; -} diff --git a/composer.json b/composer.json index 0f18e59..3d1eff4 100644 --- a/composer.json +++ b/composer.json @@ -20,8 +20,7 @@ } ], "require": { - "php": ">=8.1 <9.0", - "ext-mbstring": "*" + "php": ">=8.1 <9.0" }, "suggest": { "phalcon/phalcon": "The Phalcon framework this module integrates with" @@ -47,14 +46,12 @@ "autoload": { "psr-4": { "Phalcon\\Phql\\": "src/" - }, - "files": [ - "resources/files/parser.php" - ] + } }, "autoload-dev": { "psr-4": { - "Phalcon\\Phql\\Tests\\": "tests/" + "Phalcon\\Phql\\Tests\\": "tests/", + "Phalcon\\Phql\\Tests\\Support\\": "tests/support/" } }, "minimum-stability": "stable", diff --git a/composer.lock b/composer.lock index 1f41585..c4a7f65 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "ea7586a953769310f5a7444f8cc38f6f", + "content-hash": "0d937213ca1dc4b3f291106dcbf4609e", "packages": [], "packages-dev": [ { @@ -5588,8 +5588,7 @@ "prefer-stable": true, "prefer-lowest": false, "platform": { - "php": ">=8.1 <9.0", - "ext-mbstring": "*" + "php": ">=8.1 <9.0" }, "platform-dev": {}, "plugin-api-version": "2.11.0" diff --git a/resources/docker/develop/Dockerfile b/resources/docker/develop/Dockerfile index baf7c4a..b4cfd96 100644 --- a/resources/docker/develop/Dockerfile +++ b/resources/docker/develop/Dockerfile @@ -46,9 +46,18 @@ apt-get install -yq --no-install-recommends \ zip # Dev/test extensions install-php-extensions \ + phalcon-5.23.0 \ xdebug +# ext-phalcon is the reference implementation for the parity scripts only +# (tests/generate-golden.php, tests/differential.php). It is not loaded by +# default so that the unit suite always exercises the pure-PHP parser. Load it +# on demand: +# php -d extension=phalcon tests/differential.php +rm -f /usr/local/etc/php/conf.d/docker-php-ext-phalcon.ini # Locales sed -i -e 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen +# tr_TR: the scanner's keyword matching must not depend on the locale (PHP 8.1) +sed -i -e 's/# tr_TR.UTF-8 UTF-8/tr_TR.UTF-8 UTF-8/' /etc/locale.gen dpkg-reconfigure --frontend=noninteractive locales update-locale LANG=en_US.UTF-8 # Unlimited memory for tests diff --git a/resources/files/parser.php b/resources/files/parser.php deleted file mode 100644 index 0e877a7..0000000 --- a/resources/files/parser.php +++ /dev/null @@ -1,6222 +0,0 @@ -output; - } - - const PHQL_AGAINST = 1; /* Index of top element in stack */ - const PHQL_ALL = 39; /* Shifts left before out of the error */ - // phql_ARG_SDECL /* A place to hold %extra_argument */ - /* The parser's stack */ - const PHQL_AND = 14; /* of YYSTACKDEPTH elements */ - const PHQL_AS = 42; - const PHQL_ASC = 63; - - - /* Next is all token values, in a form suitable for use by makeheaders. -** This section will be null unless lemon is run with the -m switch. -*/ - /* -** These constants (all generated automatically by the parser generator) -** specify the various kinds of tokens (terminals) that the parser -** understands. -** -** Each symbol here is a terminal symbol in the grammar. -*/ - const PHQL_BETWEEN = 2; - const PHQL_BETWEEN_NOT = 3; - const PHQL_BITWISE_AND = 18; - const PHQL_BITWISE_NOT = 30; - const PHQL_BITWISE_OR = 19; - const PHQL_BITWISE_XOR = 20; - const PHQL_BPLACEHOLDER = 74; - const PHQL_BY = 62; - const PHQL_CASE = 79; - const PHQL_CAST = 76; - const PHQL_COMMA = 35; - const PHQL_CONVERT = 77; - const PHQL_CROSS = 45; - const PHQL_DELETE = 58; - const PHQL_DESC = 64; - const PHQL_DISTINCT = 38; - const PHQL_DIVIDE = 21; - const PHQL_DOT = 41; - const PHQL_DOUBLE = 86; - const PHQL_ELSE = 83; - const PHQL_END = 80; - const PHQL_EQUALS = 4; - const PHQL_EXISTS = 75; - const PHQL_FALSE = 88; - const PHQL_FOR = 67; - const PHQL_FROM = 37; - const PHQL_FULL = 49; - const PHQL_GREATER = 7; - const PHQL_GREATEREQUAL = 8; - const PHQL_GROUP = 65; - const PHQL_HAVING = 66; - const PHQL_HINTEGER = 71; - const PHQL_IDENTIFIER = 40; - const PHQL_ILIKE = 17; - const PHQL_IN = 28; - const PHQL_INNER = 43; - const PHQL_INSERT = 51; - const PHQL_INTEGER = 70; - const PHQL_INTO = 52; - const PHQL_IS = 27; - const PHQL_JOIN = 44; - const PHQL_LEFT = 46; - const PHQL_LESS = 6; - const PHQL_LESSEQUAL = 9; - const PHQL_LIKE = 16; - const PHQL_LIMIT = 68; - const PHQL_MINUS = 25; - const PHQL_MOD = 23; - const PHQL_NOT = 29; - const PHQL_NOTEQUALS = 5; - const PHQL_NPLACEHOLDER = 72; - const PHQL_NULL = 84; - const PHQL_OFFSET = 69; - const PHQL_ON = 50; - const PHQL_OP_CONCAT = 26; - const PHQL_OP_CONTAINED = 12; - const PHQL_OP_CONTAINS = 11; - const PHQL_OP_JSON_GET = 31; - const PHQL_OP_JSON_GET_TEXT = 32; - const PHQL_OP_JSON_PATH = 33; - const PHQL_OP_JSON_PATH_TEXT = 34; - const PHQL_OP_MATCHES = 10; - const PHQL_OP_OVERLAPS = 13; - const PHQL_OR = 15; - const PHQL_ORDER = 61; - const PHQL_OUTER = 47; - const PHQL_PARENTHESES_CLOSE = 55; - const PHQL_PARENTHESES_OPEN = 54; - const PHQL_PLUS = 24; - const PHQL_RIGHT = 48; - const PHQL_SELECT = 36; - const PHQL_SET = 57; - const PHQL_SPLACEHOLDER = 73; - const PHQL_STRING = 85; - const PHQL_THEN = 82; - const PHQL_TIMES = 22; - const PHQL_TRUE = 87; - const PHQL_UPDATE = 56; - const PHQL_USING = 78; - const PHQL_VALUES = 53; - const PHQL_WHEN = 81; - const PHQL_WHERE = 60; - const PHQL_WITH = 59; - const YYERRORSYMBOL = 89; - const YYNOCODE = 144; - const YYWILDCARD = 144; /* No %wildcard in this grammar; use YYNOCODE so the wildcard path never matches */ - const YYNRULE = 171; - const YYNSTATE = 314; - const YYSTACKDEPTH = 100; - /* The next thing included is series of defines which control -** various aspects of the generated parser. -** YYCODETYPE is the data type used for storing terminal -** and nonterminal numbers. "unsigned char" is -** used if there are fewer than 250 terminals -** and nonterminals. "int" is used otherwise. -** YYNOCODE is a number of type YYCODETYPE which corresponds -** to no legal terminal or nonterminal number. This -** number is used to fill in empty slots of the hash -** table. -** YYFALLBACK If defined, this indicates that one or more tokens -** have fall-back values which should be used if the -** original value of the token will not parse. -** YYACTIONTYPE is the data type used for storing terminal -** and nonterminal numbers. "unsigned char" is -** used if there are fewer than 250 rules and -** states combined. "int" is used otherwise. -** phql_TOKENTYPE is the data type used for minor tokens given -** directly to the parser from the tokenizer. -** YYMINORTYPE is the data type used for all minor tokens. -** This is typically a union of many types, one of -** which is phql_TOKENTYPE. The entry in the union -** for base tokens is called "yy0". -** YYSTACKDEPTH is the maximum depth of the parser's stack. -** phql_ARG_SDECL A static variable declaration for the %extra_argument -** phql_ARG_PDECL A parameter declaration for the %extra_argument -** phql_ARG_STORE Code to store %extra_argument into yypParser -** phql_ARG_FETCH Code to extract %extra_argument from yypParser -** YYNSTATE the combined number of states. -** YYNRULE the number of rules in the grammar -** YYERRORSYMBOL is the code number of the error symbol. If not -** defined, then do no error processing. -*/ - const YY_REDUCE_MAX = 313; -#define phql_TOKENTYPE phql_parser_token* - const YY_REDUCE_USE_DFLT = -1; - const YY_SHIFT_MAX = 313; - const YY_SHIFT_USE_DFLT = -2; - var $YY_ACCEPT_ACTION; - - /* since we cant use expressions to initialize these as class - * constants, we do so during parser init. */ - var $YY_ERROR_ACTION; - var $YY_NO_ACTION; - static $yyFallback = []; - - /* Next are that tables used to determine what action to take based on the -** current state and lookahead token. These tables are used to implement -** functions that take a state number and lookahead value and return an -** action integer. -** -** Suppose the action integer is N. Then the action is determined as -** follows -** -** 0 <= N < YYNSTATE Shift N. That is, push the lookahead -** token onto the stack and goto state N. -** -** YYNSTATE <= N < YYNSTATE+YYNRULE Reduce by rule N-YYNSTATE. -** -** N == YYNSTATE+YYNRULE A syntax error has occurred. -** -** N == YYNSTATE+YYNRULE+1 The parser accepts its input. -** -** N == YYNSTATE+YYNRULE+2 No such action. Denotes unused -** slots in the yy_action[] table. -** -** The action table is constructed as a single large table named yy_action[]. -** Given state S and lookahead X, the action is computed as -** -** yy_action[ yy_shift_ofst[S] + X ] -** -** If the index value yy_shift_ofst[S]+X is out of range or if the value -** yy_lookahead[yy_shift_ofst[S]+X] is not equal to X or if yy_shift_ofst[S] -** is equal to YY_SHIFT_USE_DFLT, it means that the action is not in the table -** and that yy_default[S] should be used instead. -** -** The formula above is for computing the action when the lookahead is -** a terminal symbol. If the lookahead is a non-terminal (as occurs after -** a reduce action) then the yy_reduce_ofst[] array is used in place of -** the yy_shift_ofst[] array and YY_REDUCE_USE_DFLT is used in place of -** YY_SHIFT_USE_DFLT. -** -** The following are the tables generated in this section: -** -** yy_action[] A single table containing all actions. -** yy_lookahead[] A table containing the lookahead for each entry in -** yy_action. Used to detect hash collisions. -** yy_shift_ofst[] For each state, the offset into yy_action for -** shifting terminals. -** yy_reduce_ofst[] For each state, the offset into yy_action for -** shifting non-terminals after a reduce. -** yy_default[] Default action for each state. -*/ - /** The following table contains information about every rule that - * is used during the reduce. - * Rather than pollute memory with a large number of arrays, - * we store both data points in the same array, indexing by - * rule number * 2. - * static const struct { - * YYCODETYPE lhs; // Symbol on the left-hand side of the rule - * unsigned char nrhs; // Number of right-hand side symbols in the rule - * } yyRuleInfo[] = { - */ - static $yyRuleInfo = [ - 90, - 1, - 91, - 1, - 91, - 1, - 91, - 1, - 91, - 1, - 92, - 7, - 96, - 6, - 103, - 1, - 103, - 1, - 103, - 0, - 104, - 3, - 104, - 1, - 107, - 1, - 107, - 3, - 107, - 3, - 107, - 2, - 107, - 1, - 105, - 3, - 105, - 1, - 106, - 1, - 106, - 0, - 110, - 2, - 110, - 1, - 111, - 1, - 112, - 4, - 115, - 2, - 115, - 1, - 115, - 0, - 113, - 2, - 113, - 2, - 113, - 3, - 113, - 2, - 113, - 3, - 113, - 2, - 113, - 3, - 113, - 2, - 113, - 1, - 116, - 2, - 116, - 0, - 93, - 7, - 93, - 10, - 117, - 3, - 117, - 1, - 120, - 1, - 118, - 3, - 118, - 1, - 121, - 1, - 94, - 3, - 122, - 5, - 124, - 3, - 124, - 1, - 125, - 3, - 127, - 1, - 95, - 3, - 128, - 3, - 109, - 3, - 109, - 2, - 109, - 1, - 109, - 5, - 109, - 7, - 109, - 6, - 109, - 4, - 109, - 5, - 109, - 3, - 130, - 3, - 130, - 1, - 129, - 1, - 114, - 1, - 97, - 2, - 97, - 0, - 100, - 3, - 100, - 0, - 131, - 3, - 131, - 1, - 132, - 1, - 132, - 2, - 132, - 2, - 98, - 3, - 98, - 0, - 133, - 3, - 133, - 1, - 134, - 1, - 99, - 2, - 99, - 0, - 102, - 2, - 102, - 0, - 101, - 2, - 101, - 4, - 101, - 4, - 101, - 0, - 123, - 2, - 123, - 0, - 135, - 1, - 135, - 1, - 135, - 1, - 135, - 1, - 135, - 1, - 108, - 2, - 108, - 3, - 108, - 3, - 108, - 3, - 108, - 3, - 108, - 3, - 108, - 3, - 108, - 3, - 108, - 3, - 108, - 3, - 108, - 3, - 108, - 3, - 108, - 3, - 108, - 3, - 108, - 3, - 108, - 3, - 108, - 3, - 108, - 3, - 108, - 3, - 108, - 3, - 108, - 3, - 108, - 3, - 108, - 3, - 108, - 3, - 108, - 3, - 108, - 3, - 108, - 3, - 108, - 4, - 108, - 3, - 108, - 4, - 108, - 5, - 108, - 6, - 108, - 3, - 108, - 5, - 108, - 6, - 108, - 4, - 108, - 3, - 108, - 6, - 108, - 6, - 108, - 4, - 137, - 2, - 137, - 1, - 138, - 4, - 138, - 2, - 108, - 1, - 139, - 5, - 140, - 1, - 140, - 0, - 141, - 1, - 141, - 0, - 136, - 3, - 136, - 1, - 142, - 1, - 142, - 1, - 108, - 3, - 108, - 4, - 108, - 3, - 108, - 3, - 108, - 2, - 108, - 2, - 108, - 3, - 108, - 1, - 108, - 1, - 108, - 1, - 108, - 1, - 108, - 1, - 108, - 1, - 108, - 1, - 108, - 1, - 108, - 1, - 108, - 1, - 108, - 1, - 126, - 3, - 126, - 1, - ]; - static $yyRuleName = [ - /* 0 */ - "program ::= query_language", - /* 1 */ - "query_language ::= select_statement", - /* 2 */ - "query_language ::= insert_statement", - /* 3 */ - "query_language ::= update_statement", - /* 4 */ - "query_language ::= delete_statement", - /* 5 */ - "select_statement ::= select_clause where_clause group_clause having_clause order_clause select_limit_clause for_update_clause", - /* 6 */ - "select_clause ::= SELECT distinct_all column_list FROM associated_name_list join_list_or_null", - /* 7 */ - "distinct_all ::= DISTINCT", - /* 8 */ - "distinct_all ::= ALL", - /* 9 */ - "distinct_all ::=", - /* 10 */ - "column_list ::= column_list COMMA column_item", - /* 11 */ - "column_list ::= column_item", - /* 12 */ - "column_item ::= TIMES", - /* 13 */ - "column_item ::= IDENTIFIER DOT TIMES", - /* 14 */ - "column_item ::= expr AS IDENTIFIER", - /* 15 */ - "column_item ::= expr IDENTIFIER", - /* 16 */ - "column_item ::= expr", - /* 17 */ - "associated_name_list ::= associated_name_list COMMA associated_name", - /* 18 */ - "associated_name_list ::= associated_name", - /* 19 */ - "join_list_or_null ::= join_list", - /* 20 */ - "join_list_or_null ::=", - /* 21 */ - "join_list ::= join_list join_item", - /* 22 */ - "join_list ::= join_item", - /* 23 */ - "join_item ::= join_clause", - /* 24 */ - "join_clause ::= join_type aliased_or_qualified_name join_associated_name join_conditions", - /* 25 */ - "join_associated_name ::= AS IDENTIFIER", - /* 26 */ - "join_associated_name ::= IDENTIFIER", - /* 27 */ - "join_associated_name ::=", - /* 28 */ - "join_type ::= INNER JOIN", - /* 29 */ - "join_type ::= CROSS JOIN", - /* 30 */ - "join_type ::= LEFT OUTER JOIN", - /* 31 */ - "join_type ::= LEFT JOIN", - /* 32 */ - "join_type ::= RIGHT OUTER JOIN", - /* 33 */ - "join_type ::= RIGHT JOIN", - /* 34 */ - "join_type ::= FULL OUTER JOIN", - /* 35 */ - "join_type ::= FULL JOIN", - /* 36 */ - "join_type ::= JOIN", - /* 37 */ - "join_conditions ::= ON expr", - /* 38 */ - "join_conditions ::=", - /* 39 */ - "insert_statement ::= INSERT INTO aliased_or_qualified_name VALUES PARENTHESES_OPEN values_list PARENTHESES_CLOSE", - /* 40 */ - "insert_statement ::= INSERT INTO aliased_or_qualified_name PARENTHESES_OPEN field_list PARENTHESES_CLOSE VALUES PARENTHESES_OPEN values_list PARENTHESES_CLOSE", - /* 41 */ - "values_list ::= values_list COMMA value_item", - /* 42 */ - "values_list ::= value_item", - /* 43 */ - "value_item ::= expr", - /* 44 */ - "field_list ::= field_list COMMA field_item", - /* 45 */ - "field_list ::= field_item", - /* 46 */ - "field_item ::= IDENTIFIER", - /* 47 */ - "update_statement ::= update_clause where_clause limit_clause", - /* 48 */ - "update_clause ::= UPDATE associated_name join_list_or_null SET update_item_list", - /* 49 */ - "update_item_list ::= update_item_list COMMA update_item", - /* 50 */ - "update_item_list ::= update_item", - /* 51 */ - "update_item ::= qualified_name EQUALS new_value", - /* 52 */ - "new_value ::= expr", - /* 53 */ - "delete_statement ::= delete_clause where_clause limit_clause", - /* 54 */ - "delete_clause ::= DELETE FROM associated_name", - /* 55 */ - "associated_name ::= aliased_or_qualified_name AS IDENTIFIER", - /* 56 */ - "associated_name ::= aliased_or_qualified_name IDENTIFIER", - /* 57 */ - "associated_name ::= aliased_or_qualified_name", - /* 58 */ - "associated_name ::= aliased_or_qualified_name AS IDENTIFIER WITH with_item", - /* 59 */ - "associated_name ::= aliased_or_qualified_name AS IDENTIFIER WITH PARENTHESES_OPEN with_list PARENTHESES_CLOSE", - /* 60 */ - "associated_name ::= aliased_or_qualified_name IDENTIFIER WITH PARENTHESES_OPEN with_list PARENTHESES_CLOSE", - /* 61 */ - "associated_name ::= aliased_or_qualified_name IDENTIFIER WITH with_item", - /* 62 */ - "associated_name ::= aliased_or_qualified_name WITH PARENTHESES_OPEN with_list PARENTHESES_CLOSE", - /* 63 */ - "associated_name ::= aliased_or_qualified_name WITH with_item", - /* 64 */ - "with_list ::= with_list COMMA with_item", - /* 65 */ - "with_list ::= with_item", - /* 66 */ - "with_item ::= IDENTIFIER", - /* 67 */ - "aliased_or_qualified_name ::= qualified_name", - /* 68 */ - "where_clause ::= WHERE expr", - /* 69 */ - "where_clause ::=", - /* 70 */ - "order_clause ::= ORDER BY order_list", - /* 71 */ - "order_clause ::=", - /* 72 */ - "order_list ::= order_list COMMA order_item", - /* 73 */ - "order_list ::= order_item", - /* 74 */ - "order_item ::= expr", - /* 75 */ - "order_item ::= expr ASC", - /* 76 */ - "order_item ::= expr DESC", - /* 77 */ - "group_clause ::= GROUP BY group_list", - /* 78 */ - "group_clause ::=", - /* 79 */ - "group_list ::= group_list COMMA group_item", - /* 80 */ - "group_list ::= group_item", - /* 81 */ - "group_item ::= expr", - /* 82 */ - "having_clause ::= HAVING expr", - /* 83 */ - "having_clause ::=", - /* 84 */ - "for_update_clause ::= FOR UPDATE", - /* 85 */ - "for_update_clause ::=", - /* 86 */ - "select_limit_clause ::= LIMIT integer_or_placeholder", - /* 87 */ - "select_limit_clause ::= LIMIT integer_or_placeholder COMMA integer_or_placeholder", - /* 88 */ - "select_limit_clause ::= LIMIT integer_or_placeholder OFFSET integer_or_placeholder", - /* 89 */ - "select_limit_clause ::=", - /* 90 */ - "limit_clause ::= LIMIT integer_or_placeholder", - /* 91 */ - "limit_clause ::=", - /* 92 */ - "integer_or_placeholder ::= INTEGER", - /* 93 */ - "integer_or_placeholder ::= HINTEGER", - /* 94 */ - "integer_or_placeholder ::= NPLACEHOLDER", - /* 95 */ - "integer_or_placeholder ::= SPLACEHOLDER", - /* 96 */ - "integer_or_placeholder ::= BPLACEHOLDER", - /* 97 */ - "expr ::= MINUS expr", - /* 98 */ - "expr ::= expr MINUS expr", - /* 99 */ - "expr ::= expr PLUS expr", - /* 100 */ - "expr ::= expr TIMES expr", - /* 101 */ - "expr ::= expr DIVIDE expr", - /* 102 */ - "expr ::= expr MOD expr", - /* 103 */ - "expr ::= expr AND expr", - /* 104 */ - "expr ::= expr OR expr", - /* 105 */ - "expr ::= expr BITWISE_AND expr", - /* 106 */ - "expr ::= expr BITWISE_OR expr", - /* 107 */ - "expr ::= expr BITWISE_XOR expr", - /* 108 */ - "expr ::= expr OP_MATCHES expr", - /* 109 */ - "expr ::= expr OP_CONTAINS expr", - /* 110 */ - "expr ::= expr OP_CONTAINED expr", - /* 111 */ - "expr ::= expr OP_OVERLAPS expr", - /* 112 */ - "expr ::= expr OP_CONCAT expr", - /* 113 */ - "expr ::= expr OP_JSON_GET expr", - /* 114 */ - "expr ::= expr OP_JSON_GET_TEXT expr", - /* 115 */ - "expr ::= expr OP_JSON_PATH expr", - /* 116 */ - "expr ::= expr OP_JSON_PATH_TEXT expr", - /* 117 */ - "expr ::= expr EQUALS expr", - /* 118 */ - "expr ::= expr NOTEQUALS expr", - /* 119 */ - "expr ::= expr LESS expr", - /* 120 */ - "expr ::= expr GREATER expr", - /* 121 */ - "expr ::= expr GREATEREQUAL expr", - /* 122 */ - "expr ::= expr LESSEQUAL expr", - /* 123 */ - "expr ::= expr LIKE expr", - /* 124 */ - "expr ::= expr NOT LIKE expr", - /* 125 */ - "expr ::= expr ILIKE expr", - /* 126 */ - "expr ::= expr NOT ILIKE expr", - /* 127 */ - "expr ::= expr IN PARENTHESES_OPEN argument_list PARENTHESES_CLOSE", - /* 128 */ - "expr ::= expr NOT IN PARENTHESES_OPEN argument_list PARENTHESES_CLOSE", - /* 129 */ - "expr ::= PARENTHESES_OPEN select_statement PARENTHESES_CLOSE", - /* 130 */ - "expr ::= expr IN PARENTHESES_OPEN select_statement PARENTHESES_CLOSE", - /* 131 */ - "expr ::= expr NOT IN PARENTHESES_OPEN select_statement PARENTHESES_CLOSE", - /* 132 */ - "expr ::= EXISTS PARENTHESES_OPEN select_statement PARENTHESES_CLOSE", - /* 133 */ - "expr ::= expr AGAINST expr", - /* 134 */ - "expr ::= CAST PARENTHESES_OPEN expr AS IDENTIFIER PARENTHESES_CLOSE", - /* 135 */ - "expr ::= CONVERT PARENTHESES_OPEN expr USING IDENTIFIER PARENTHESES_CLOSE", - /* 136 */ - "expr ::= CASE expr when_clauses END", - /* 137 */ - "when_clauses ::= when_clauses when_clause", - /* 138 */ - "when_clauses ::= when_clause", - /* 139 */ - "when_clause ::= WHEN expr THEN expr", - /* 140 */ - "when_clause ::= ELSE expr", - /* 141 */ - "expr ::= function_call", - /* 142 */ - "function_call ::= IDENTIFIER PARENTHESES_OPEN distinct_or_null argument_list_or_null PARENTHESES_CLOSE", - /* 143 */ - "distinct_or_null ::= DISTINCT", - /* 144 */ - "distinct_or_null ::=", - /* 145 */ - "argument_list_or_null ::= argument_list", - /* 146 */ - "argument_list_or_null ::=", - /* 147 */ - "argument_list ::= argument_list COMMA argument_item", - /* 148 */ - "argument_list ::= argument_item", - /* 149 */ - "argument_item ::= TIMES", - /* 150 */ - "argument_item ::= expr", - /* 151 */ - "expr ::= expr IS NULL", - /* 152 */ - "expr ::= expr IS NOT NULL", - /* 153 */ - "expr ::= expr BETWEEN expr", - /* 154 */ - "expr ::= expr BETWEEN_NOT expr", - /* 155 */ - "expr ::= NOT expr", - /* 156 */ - "expr ::= BITWISE_NOT expr", - /* 157 */ - "expr ::= PARENTHESES_OPEN expr PARENTHESES_CLOSE", - /* 158 */ - "expr ::= qualified_name", - /* 159 */ - "expr ::= INTEGER", - /* 160 */ - "expr ::= HINTEGER", - /* 161 */ - "expr ::= STRING", - /* 162 */ - "expr ::= DOUBLE", - /* 163 */ - "expr ::= NULL", - /* 164 */ - "expr ::= TRUE", - /* 165 */ - "expr ::= FALSE", - /* 166 */ - "expr ::= NPLACEHOLDER", - /* 167 */ - "expr ::= SPLACEHOLDER", - /* 168 */ - "expr ::= BPLACEHOLDER", - /* 169 */ - "qualified_name ::= IDENTIFIER DOT IDENTIFIER", - /* 170 */ - "qualified_name ::= IDENTIFIER", - ]; - static $yyTokenName = [ - '$', - 'AGAINST', - 'BETWEEN', - 'BETWEEN_NOT', - 'EQUALS', - 'NOTEQUALS', - 'LESS', - 'GREATER', - 'GREATEREQUAL', - 'LESSEQUAL', - 'OP_MATCHES', - 'OP_CONTAINS', - 'OP_CONTAINED', - 'OP_OVERLAPS', - 'AND', - 'OR', - 'LIKE', - 'ILIKE', - 'BITWISE_AND', - 'BITWISE_OR', - 'BITWISE_XOR', - 'DIVIDE', - 'TIMES', - 'MOD', - 'PLUS', - 'MINUS', - 'OP_CONCAT', - 'IS', - 'IN', - 'NOT', - 'BITWISE_NOT', - 'OP_JSON_GET', - 'OP_JSON_GET_TEXT', - 'OP_JSON_PATH', - 'OP_JSON_PATH_TEXT', - 'COMMA', - 'SELECT', - 'FROM', - 'DISTINCT', - 'ALL', - 'IDENTIFIER', - 'DOT', - 'AS', - 'INNER', - 'JOIN', - 'CROSS', - 'LEFT', - 'OUTER', - 'RIGHT', - 'FULL', - 'ON', - 'INSERT', - 'INTO', - 'VALUES', - 'PARENTHESES_OPEN', - 'PARENTHESES_CLOSE', - 'UPDATE', - 'SET', - 'DELETE', - 'WITH', - 'WHERE', - 'ORDER', - 'BY', - 'ASC', - 'DESC', - 'GROUP', - 'HAVING', - 'FOR', - 'LIMIT', - 'OFFSET', - 'INTEGER', - 'HINTEGER', - 'NPLACEHOLDER', - 'SPLACEHOLDER', - 'BPLACEHOLDER', - 'EXISTS', - 'CAST', - 'CONVERT', - 'USING', - 'CASE', - 'END', - 'WHEN', - 'THEN', - 'ELSE', - 'NULL', - 'STRING', - 'DOUBLE', - 'TRUE', - 'FALSE', - 'error', - 'program', - 'query_language', - 'select_statement', - 'insert_statement', - 'update_statement', - 'delete_statement', - 'select_clause', - 'where_clause', - 'group_clause', - 'having_clause', - 'order_clause', - 'select_limit_clause', - 'for_update_clause', - 'distinct_all', - 'column_list', - 'associated_name_list', - 'join_list_or_null', - 'column_item', - 'expr', - 'associated_name', - 'join_list', - 'join_item', - 'join_clause', - 'join_type', - 'aliased_or_qualified_name', - 'join_associated_name', - 'join_conditions', - 'values_list', - 'field_list', - 'value_list', - 'value_item', - 'field_item', - 'update_clause', - 'limit_clause', - 'update_item_list', - 'update_item', - 'qualified_name', - 'new_value', - 'delete_clause', - 'with_item', - 'with_list', - 'order_list', - 'order_item', - 'group_list', - 'group_item', - 'integer_or_placeholder', - 'argument_list', - 'when_clauses', - 'when_clause', - 'function_call', - 'distinct_or_null', - 'argument_list_or_null', - 'argument_item', - ]; - public mixed $yyTraceFILE = null; - public ?string $yyTracePrompt = ''; - static $yy_action = [ - /* 0 */ - 138, - 144, - 146, - 73, - 75, - 77, - 79, - 81, - 83, - 55, - /* 10 */ - 57, - 59, - 61, - 45, - 47, - 85, - 90, - 49, - 51, - 53, - /* 20 */ - 41, - 39, - 43, - 37, - 34, - 63, - 140, - 92, - 87, - 314, - /* 30 */ - 65, - 67, - 69, - 71, - 45, - 47, - 85, - 90, - 49, - 51, - /* 40 */ - 53, - 41, - 39, - 43, - 37, - 34, - 63, - 140, - 92, - 87, - /* 50 */ - 315, - 65, - 67, - 69, - 71, - 212, - 228, - 214, - 216, - 17, - /* 60 */ - 220, - 224, - 32, - 33, - 138, - 144, - 146, - 73, - 75, - 77, - /* 70 */ - 79, - 81, - 83, - 55, - 57, - 59, - 61, - 45, - 47, - 85, - /* 80 */ - 90, - 49, - 51, - 53, - 41, - 39, - 43, - 37, - 34, - 63, - /* 90 */ - 140, - 92, - 87, - 24, - 65, - 67, - 69, - 71, - 138, - 144, - /* 100 */ - 146, - 73, - 75, - 77, - 79, - 81, - 83, - 55, - 57, - 59, - /* 110 */ - 61, - 45, - 47, - 85, - 90, - 49, - 51, - 53, - 41, - 39, - /* 120 */ - 43, - 37, - 34, - 63, - 140, - 92, - 87, - 267, - 65, - 67, - /* 130 */ - 69, - 71, - 19, - 20, - 21, - 22, - 23, - 240, - 87, - 238, - /* 140 */ - 65, - 67, - 69, - 71, - 174, - 231, - 206, - 97, - 138, - 144, - /* 150 */ - 146, - 73, - 75, - 77, - 79, - 81, - 83, - 55, - 57, - 59, - /* 160 */ - 61, - 45, - 47, - 85, - 90, - 49, - 51, - 53, - 41, - 39, - /* 170 */ - 43, - 37, - 34, - 63, - 140, - 92, - 87, - 316, - 65, - 67, - /* 180 */ - 69, - 71, - 85, - 90, - 49, - 51, - 53, - 41, - 39, - 43, - /* 190 */ - 37, - 34, - 63, - 140, - 92, - 87, - 317, - 65, - 67, - 69, - /* 200 */ - 71, - 318, - 150, - 7, - 138, - 144, - 146, - 73, - 75, - 77, - /* 210 */ - 79, - 81, - 83, - 55, - 57, - 59, - 61, - 45, - 47, - 85, - /* 220 */ - 90, - 49, - 51, - 53, - 41, - 39, - 43, - 37, - 34, - 63, - /* 230 */ - 140, - 92, - 87, - 127, - 65, - 67, - 69, - 71, - 130, - 131, - /* 240 */ - 132, - 172, - 174, - 260, - 206, - 160, - 180, - 138, - 144, - 146, - /* 250 */ - 73, - 75, - 77, - 79, - 81, - 83, - 55, - 57, - 59, - 61, - /* 260 */ - 45, - 47, - 85, - 90, - 49, - 51, - 53, - 41, - 39, - 43, - /* 270 */ - 37, - 34, - 63, - 140, - 92, - 87, - 258, - 65, - 67, - 69, - /* 280 */ - 71, - 138, - 144, - 146, - 73, - 75, - 77, - 79, - 81, - 83, - /* 290 */ - 55, - 57, - 59, - 61, - 45, - 47, - 85, - 90, - 49, - 51, - /* 300 */ - 53, - 41, - 39, - 43, - 37, - 34, - 63, - 140, - 92, - 87, - /* 310 */ - 8, - 65, - 67, - 69, - 71, - 140, - 92, - 87, - 9, - 65, - /* 320 */ - 67, - 69, - 71, - 211, - 166, - 209, - 138, - 144, - 146, - 73, - /* 330 */ - 75, - 77, - 79, - 81, - 83, - 55, - 57, - 59, - 61, - 45, - /* 340 */ - 47, - 85, - 90, - 49, - 51, - 53, - 41, - 39, - 43, - 37, - /* 350 */ - 34, - 63, - 140, - 92, - 87, - 142, - 65, - 67, - 69, - 71, - /* 360 */ - 242, - 243, - 176, - 73, - 75, - 77, - 79, - 81, - 83, - 55, - /* 370 */ - 57, - 59, - 61, - 45, - 47, - 85, - 90, - 49, - 51, - 53, - /* 380 */ - 41, - 39, - 43, - 37, - 34, - 63, - 140, - 92, - 87, - 94, - /* 390 */ - 65, - 67, - 69, - 71, - 188, - 88, - 248, - 35, - 114, - 155, - /* 400 */ - 103, - 189, - 191, - 6, - 269, - 100, - 182, - 250, - 94, - 296, - /* 410 */ - 141, - 311, - 179, - 212, - 228, - 214, - 216, - 120, - 220, - 224, - /* 420 */ - 188, - 110, - 112, - 35, - 193, - 112, - 148, - 189, - 191, - 486, - /* 430 */ - 1, - 2, - 3, - 4, - 5, - 6, - 107, - 178, - 179, - 116, - /* 440 */ - 187, - 109, - 194, - 195, - 201, - 202, - 203, - 153, - 157, - 163, - /* 450 */ - 26, - 169, - 148, - 460, - 171, - 208, - 198, - 196, - 197, - 199, - /* 460 */ - 200, - 291, - 300, - 307, - 303, - 113, - 108, - 308, - 194, - 195, - /* 470 */ - 201, - 202, - 203, - 153, - 157, - 163, - 10, - 169, - 15, - 182, - /* 480 */ - 113, - 117, - 198, - 196, - 197, - 199, - 200, - 212, - 228, - 214, - /* 490 */ - 216, - 233, - 220, - 224, - 35, - 110, - 98, - 193, - 189, - 191, - /* 500 */ - 230, - 334, - 110, - 31, - 112, - 102, - 235, - 185, - 13, - 234, - /* 510 */ - 178, - 101, - 183, - 204, - 11, - 118, - 102, - 125, - 121, - 180, - /* 520 */ - 35, - 193, - 123, - 148, - 189, - 191, - 28, - 257, - 125, - 12, - /* 530 */ - 219, - 94, - 265, - 217, - 178, - 179, - 113, - 122, - 14, - 194, - /* 540 */ - 195, - 201, - 202, - 203, - 153, - 157, - 163, - 133, - 169, - 148, - /* 550 */ - 193, - 272, - 280, - 198, - 196, - 197, - 199, - 200, - 264, - 125, - /* 560 */ - 246, - 271, - 27, - 178, - 6, - 194, - 195, - 201, - 202, - 203, - /* 570 */ - 153, - 157, - 163, - 125, - 169, - 223, - 182, - 16, - 221, - 198, - /* 580 */ - 196, - 197, - 199, - 200, - 227, - 297, - 18, - 225, - 188, - 96, - /* 590 */ - 102, - 35, - 241, - 237, - 193, - 189, - 191, - 232, - 237, - 186, - /* 600 */ - 265, - 25, - 125, - 29, - 244, - 236, - 179, - 178, - 99, - 93, - /* 610 */ - 204, - 193, - 129, - 229, - 131, - 132, - 193, - 35, - 193, - 459, - /* 620 */ - 148, - 189, - 191, - 128, - 178, - 262, - 266, - 95, - 126, - 178, - /* 630 */ - 306, - 178, - 179, - 302, - 303, - 104, - 194, - 195, - 201, - 202, - /* 640 */ - 203, - 153, - 157, - 163, - 281, - 169, - 148, - 290, - 193, - 305, - /* 650 */ - 198, - 196, - 197, - 199, - 200, - 313, - 105, - 106, - 111, - 115, - /* 660 */ - 102, - 178, - 194, - 195, - 201, - 202, - 203, - 153, - 157, - 163, - /* 670 */ - 112, - 169, - 125, - 119, - 124, - 127, - 198, - 196, - 197, - 199, - /* 680 */ - 200, - 49, - 51, - 53, - 41, - 39, - 43, - 37, - 34, - 63, - /* 690 */ - 140, - 92, - 87, - 134, - 65, - 67, - 69, - 71, - 41, - 39, - /* 700 */ - 43, - 37, - 34, - 63, - 140, - 92, - 87, - 128, - 65, - 67, - /* 710 */ - 69, - 71, - 37, - 34, - 63, - 140, - 92, - 87, - 136, - 65, - /* 720 */ - 67, - 69, - 71, - 135, - 278, - 254, - 278, - 31, - 405, - 6, - /* 730 */ - 151, - 143, - 94, - 274, - 6, - 285, - 279, - 154, - 279, - 152, - /* 740 */ - 156, - 182, - 193, - 298, - 193, - 193, - 149, - 129, - 229, - 131, - /* 750 */ - 132, - 30, - 256, - 158, - 161, - 178, - 186, - 178, - 178, - 193, - /* 760 */ - 36, - 278, - 38, - 40, - 193, - 162, - 164, - 173, - 168, - 252, - /* 770 */ - 193, - 205, - 178, - 277, - 167, - 204, - 245, - 178, - 193, - 193, - /* 780 */ - 193, - 193, - 186, - 178, - 184, - 181, - 42, - 44, - 46, - 48, - /* 790 */ - 50, - 178, - 178, - 178, - 178, - 52, - 294, - 54, - 56, - 213, - /* 800 */ - 210, - 342, - 253, - 343, - 193, - 193, - 193, - 193, - 193, - 58, - /* 810 */ - 215, - 218, - 60, - 193, - 62, - 193, - 193, - 178, - 178, - 178, - /* 820 */ - 178, - 178, - 344, - 64, - 66, - 345, - 178, - 193, - 178, - 178, - /* 830 */ - 193, - 68, - 193, - 70, - 72, - 74, - 222, - 346, - 76, - 78, - /* 840 */ - 178, - 193, - 193, - 178, - 347, - 178, - 226, - 348, - 349, - 193, - /* 850 */ - 80, - 193, - 193, - 193, - 178, - 178, - 193, - 193, - 82, - 84, - /* 860 */ - 86, - 89, - 178, - 276, - 178, - 178, - 178, - 91, - 193, - 178, - /* 870 */ - 178, - 350, - 239, - 251, - 287, - 276, - 193, - 193, - 193, - 193, - /* 880 */ - 247, - 178, - 137, - 275, - 139, - 193, - 145, - 147, - 159, - 178, - /* 890 */ - 178, - 178, - 178, - 255, - 282, - 286, - 165, - 261, - 178, - 263, - /* 900 */ - 193, - 270, - 193, - 170, - 193, - 193, - 193, - 175, - 273, - 353, - /* 910 */ - 289, - 283, - 354, - 178, - 193, - 178, - 284, - 178, - 178, - 178, - /* 920 */ - 292, - 193, - 177, - 190, - 192, - 193, - 207, - 178, - 249, - 259, - /* 930 */ - 268, - 288, - 293, - 361, - 178, - 295, - 404, - 299, - 178, - 301, - /* 940 */ - 193, - 193, - 193, - 304, - 193, - 309, - 193, - 193, - 193, - 310, - /* 950 */ - 367, - 312, - 316, - 178, - 178, - 178, - 316, - 178, - 316, - 178, - /* 960 */ - 178, - 178, - ]; - static $yy_default = [ - /* 0 */ - 485, - 485, - 485, - 485, - 485, - 485, - 383, - 392, - 397, - 385, - /* 10 */ - 403, - 399, - 319, - 485, - 398, - 485, - 400, - 485, - 401, - 406, - /* 20 */ - 407, - 408, - 409, - 410, - 485, - 402, - 485, - 485, - 384, - 485, - /* 30 */ - 386, - 388, - 389, - 390, - 485, - 485, - 411, - 485, - 413, - 485, - /* 40 */ - 414, - 485, - 415, - 485, - 416, - 485, - 417, - 485, - 418, - 485, - /* 50 */ - 419, - 485, - 420, - 485, - 421, - 485, - 422, - 485, - 423, - 485, - /* 60 */ - 424, - 485, - 425, - 485, - 426, - 485, - 427, - 485, - 428, - 485, - /* 70 */ - 429, - 485, - 430, - 485, - 431, - 485, - 432, - 485, - 433, - 485, - /* 80 */ - 434, - 485, - 435, - 485, - 436, - 485, - 437, - 485, - 485, - 438, - /* 90 */ - 485, - 439, - 485, - 485, - 323, - 485, - 485, - 485, - 334, - 320, - /* 100 */ - 485, - 331, - 371, - 485, - 369, - 485, - 372, - 485, - 485, - 373, - /* 110 */ - 485, - 378, - 380, - 379, - 370, - 485, - 485, - 485, - 374, - 375, - /* 120 */ - 485, - 485, - 485, - 376, - 377, - 381, - 484, - 485, - 483, - 333, - /* 130 */ - 335, - 337, - 485, - 341, - 352, - 338, - 485, - 351, - 485, - 447, - /* 140 */ - 485, - 465, - 485, - 466, - 485, - 467, - 485, - 468, - 485, - 485, - /* 150 */ - 471, - 485, - 443, - 485, - 485, - 485, - 446, - 485, - 485, - 485, - /* 160 */ - 485, - 485, - 448, - 485, - 485, - 485, - 485, - 485, - 449, - 485, - /* 170 */ - 485, - 485, - 450, - 451, - 485, - 485, - 485, - 453, - 455, - 484, - /* 180 */ - 458, - 485, - 464, - 485, - 456, - 485, - 485, - 461, - 463, - 485, - /* 190 */ - 469, - 485, - 470, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - /* 200 */ - 479, - 480, - 481, - 482, - 462, - 457, - 485, - 454, - 452, - 485, - /* 210 */ - 339, - 340, - 485, - 485, - 485, - 485, - 485, - 485, - 485, - 485, - /* 220 */ - 485, - 485, - 485, - 485, - 485, - 485, - 485, - 485, - 485, - 336, - /* 230 */ - 332, - 485, - 324, - 326, - 484, - 485, - 327, - 330, - 485, - 328, - /* 240 */ - 329, - 325, - 321, - 322, - 485, - 441, - 485, - 444, - 485, - 440, - /* 250 */ - 485, - 485, - 485, - 442, - 485, - 445, - 412, - 387, - 485, - 396, - /* 260 */ - 485, - 485, - 391, - 485, - 393, - 395, - 394, - 485, - 382, - 485, - /* 270 */ - 485, - 485, - 485, - 485, - 485, - 485, - 485, - 355, - 357, - 356, - /* 280 */ - 485, - 485, - 485, - 485, - 485, - 485, - 485, - 485, - 358, - 360, - /* 290 */ - 359, - 383, - 485, - 485, - 485, - 485, - 485, - 485, - 485, - 485, - /* 300 */ - 362, - 485, - 363, - 485, - 485, - 365, - 366, - 364, - 383, - 485, - /* 310 */ - 485, - 485, - 485, - 368, - ]; - static $yy_lookahead = [ - /* 0 */ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - /* 10 */ - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - /* 20 */ - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 0, - /* 30 */ - 31, - 32, - 33, - 34, - 14, - 15, - 16, - 17, - 18, - 19, - /* 40 */ - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - /* 50 */ - 0, - 31, - 32, - 33, - 34, - 43, - 44, - 45, - 46, - 35, - /* 60 */ - 48, - 49, - 63, - 64, - 1, - 2, - 3, - 4, - 5, - 6, - /* 70 */ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - /* 80 */ - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - /* 90 */ - 27, - 28, - 29, - 69, - 31, - 32, - 33, - 34, - 1, - 2, - /* 100 */ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - /* 110 */ - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - /* 120 */ - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 60, - 31, - 32, - /* 130 */ - 33, - 34, - 70, - 71, - 72, - 73, - 74, - 40, - 29, - 42, - /* 140 */ - 31, - 32, - 33, - 34, - 81, - 35, - 83, - 37, - 1, - 2, - /* 150 */ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - /* 160 */ - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - /* 170 */ - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 0, - 31, - 32, - /* 180 */ - 33, - 34, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - /* 190 */ - 24, - 25, - 26, - 27, - 28, - 29, - 0, - 31, - 32, - 33, - /* 200 */ - 34, - 0, - 55, - 97, - 1, - 2, - 3, - 4, - 5, - 6, - /* 210 */ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - /* 220 */ - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - /* 230 */ - 27, - 28, - 29, - 41, - 31, - 32, - 33, - 34, - 111, - 112, - /* 240 */ - 113, - 80, - 81, - 65, - 83, - 42, - 54, - 1, - 2, - 3, - /* 250 */ - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - /* 260 */ - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - /* 270 */ - 24, - 25, - 26, - 27, - 28, - 29, - 66, - 31, - 32, - 33, - /* 280 */ - 34, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - /* 290 */ - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - /* 300 */ - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - /* 310 */ - 98, - 31, - 32, - 33, - 34, - 27, - 28, - 29, - 99, - 31, - /* 320 */ - 32, - 33, - 34, - 40, - 78, - 42, - 1, - 2, - 3, - 4, - /* 330 */ - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - /* 340 */ - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - /* 350 */ - 25, - 26, - 27, - 28, - 29, - 29, - 31, - 32, - 33, - 34, - /* 360 */ - 38, - 39, - 82, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - /* 370 */ - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - /* 380 */ - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 36, - /* 390 */ - 31, - 32, - 33, - 34, - 22, - 16, - 17, - 25, - 40, - 92, - /* 400 */ - 42, - 29, - 30, - 96, - 51, - 35, - 108, - 28, - 36, - 56, - /* 410 */ - 84, - 58, - 40, - 43, - 44, - 45, - 46, - 59, - 48, - 49, - /* 420 */ - 22, - 35, - 40, - 25, - 126, - 40, - 54, - 29, - 30, - 90, - /* 430 */ - 91, - 92, - 93, - 94, - 95, - 96, - 54, - 139, - 40, - 54, - /* 440 */ - 142, - 55, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - /* 450 */ - 61, - 79, - 54, - 55, - 137, - 138, - 84, - 85, - 86, - 87, - /* 460 */ - 88, - 122, - 124, - 125, - 126, - 129, - 130, - 128, - 70, - 71, - /* 470 */ - 72, - 73, - 74, - 75, - 76, - 77, - 100, - 79, - 68, - 108, - /* 480 */ - 129, - 130, - 84, - 85, - 86, - 87, - 88, - 43, - 44, - 45, - /* 490 */ - 46, - 22, - 48, - 49, - 25, - 35, - 105, - 126, - 29, - 30, - /* 500 */ - 109, - 57, - 35, - 108, - 40, - 114, - 41, - 136, - 67, - 40, - /* 510 */ - 139, - 109, - 141, - 142, - 101, - 55, - 114, - 126, - 54, - 54, - /* 520 */ - 25, - 126, - 55, - 54, - 29, - 30, - 131, - 132, - 126, - 102, - /* 530 */ - 44, - 36, - 108, - 47, - 139, - 40, - 129, - 130, - 56, - 70, - /* 540 */ - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 114, - 79, - 54, - /* 550 */ - 126, - 53, - 54, - 84, - 85, - 86, - 87, - 88, - 134, - 126, - /* 560 */ - 92, - 114, - 62, - 139, - 96, - 70, - 71, - 72, - 73, - 74, - /* 570 */ - 75, - 76, - 77, - 126, - 79, - 44, - 108, - 135, - 47, - 84, - /* 580 */ - 85, - 86, - 87, - 88, - 44, - 109, - 135, - 47, - 22, - 104, - /* 590 */ - 114, - 25, - 107, - 108, - 126, - 29, - 30, - 107, - 108, - 35, - /* 600 */ - 108, - 135, - 126, - 35, - 136, - 22, - 40, - 139, - 106, - 54, - /* 610 */ - 142, - 126, - 110, - 111, - 112, - 113, - 126, - 25, - 126, - 55, - /* 620 */ - 54, - 29, - 30, - 40, - 139, - 133, - 134, - 103, - 40, - 139, - /* 630 */ - 108, - 139, - 40, - 125, - 126, - 40, - 70, - 71, - 72, - 73, - /* 640 */ - 74, - 75, - 76, - 77, - 118, - 79, - 54, - 121, - 126, - 127, - /* 650 */ - 84, - 85, - 86, - 87, - 88, - 109, - 59, - 129, - 129, - 59, - /* 660 */ - 114, - 139, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - /* 670 */ - 40, - 79, - 126, - 129, - 129, - 41, - 84, - 85, - 86, - 87, - /* 680 */ - 88, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - /* 690 */ - 27, - 28, - 29, - 115, - 31, - 32, - 33, - 34, - 21, - 22, - /* 700 */ - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 40, - 31, - 32, - /* 710 */ - 33, - 34, - 24, - 25, - 26, - 27, - 28, - 29, - 50, - 31, - /* 720 */ - 32, - 33, - 34, - 116, - 108, - 92, - 108, - 108, - 0, - 96, - /* 730 */ - 92, - 84, - 36, - 117, - 96, - 117, - 120, - 54, - 120, - 55, - /* 740 */ - 55, - 108, - 126, - 106, - 126, - 126, - 108, - 110, - 111, - 112, - /* 750 */ - 113, - 132, - 108, - 54, - 40, - 139, - 35, - 139, - 139, - 126, - /* 760 */ - 108, - 108, - 108, - 108, - 126, - 55, - 54, - 138, - 55, - 136, - /* 770 */ - 126, - 38, - 139, - 120, - 40, - 142, - 55, - 139, - 126, - 126, - /* 780 */ - 126, - 126, - 35, - 139, - 55, - 140, - 108, - 108, - 108, - 108, - /* 790 */ - 108, - 139, - 139, - 139, - 139, - 108, - 68, - 108, - 108, - 44, - /* 800 */ - 40, - 40, - 55, - 40, - 126, - 126, - 126, - 126, - 126, - 108, - /* 810 */ - 44, - 44, - 108, - 126, - 108, - 126, - 126, - 139, - 139, - 139, - /* 820 */ - 139, - 139, - 40, - 108, - 108, - 40, - 139, - 126, - 139, - 139, - /* 830 */ - 126, - 108, - 126, - 108, - 108, - 108, - 44, - 40, - 108, - 108, - /* 840 */ - 139, - 126, - 126, - 139, - 40, - 139, - 44, - 40, - 40, - 126, - /* 850 */ - 108, - 126, - 126, - 126, - 139, - 139, - 126, - 126, - 108, - 108, - /* 860 */ - 108, - 108, - 139, - 35, - 139, - 139, - 139, - 108, - 126, - 139, - /* 870 */ - 139, - 40, - 40, - 54, - 35, - 35, - 126, - 126, - 126, - 126, - /* 880 */ - 55, - 139, - 108, - 55, - 108, - 126, - 108, - 108, - 108, - 139, - /* 890 */ - 139, - 139, - 139, - 55, - 55, - 55, - 108, - 62, - 139, - 35, - /* 900 */ - 126, - 52, - 126, - 108, - 126, - 126, - 126, - 108, - 54, - 0, - /* 910 */ - 40, - 53, - 0, - 139, - 126, - 139, - 54, - 139, - 139, - 139, - /* 920 */ - 97, - 126, - 108, - 108, - 108, - 126, - 108, - 139, - 108, - 108, - /* 930 */ - 108, - 121, - 123, - 0, - 139, - 135, - 0, - 57, - 139, - 35, - /* 940 */ - 126, - 126, - 126, - 4, - 126, - 97, - 126, - 126, - 126, - 123, - /* 950 */ - 0, - 37, - 143, - 139, - 139, - 139, - 143, - 139, - 143, - 139, - /* 960 */ - 139, - 139, - ]; - static $yy_reduce_ofst = [ - /* 0 */ - 339, - -1, - -1, - -1, - -1, - -1, - 106, - 212, - 219, - 376, - /* 10 */ - 413, - 427, - -1, - -1, - -1, - 442, - -1, - 451, - -1, - -1, - /* 20 */ - -1, - -1, - -1, - -1, - 466, - -1, - -1, - 395, - -1, - 619, - /* 30 */ - -1, - -1, - -1, - -1, - 644, - 652, - -1, - 654, - -1, - 655, - /* 40 */ - -1, - 678, - -1, - 679, - -1, - 680, - -1, - 681, - -1, - 682, - /* 50 */ - -1, - 687, - -1, - 689, - -1, - 690, - -1, - 701, - -1, - 704, - /* 60 */ - -1, - 706, - -1, - 715, - -1, - 716, - -1, - 723, - -1, - 725, - /* 70 */ - -1, - 726, - -1, - 727, - -1, - 730, - -1, - 731, - -1, - 742, - /* 80 */ - -1, - 750, - -1, - 751, - -1, - 752, - -1, - -1, - 753, - -1, - /* 90 */ - 759, - -1, - -1, - 468, - 524, - 485, - -1, - 391, - 502, - -1, - /* 100 */ - 402, - -1, - -1, - -1, - -1, - 528, - -1, - 336, - -1, - -1, - /* 110 */ - 529, - -1, - -1, - -1, - -1, - 544, - 351, - -1, - -1, - -1, - /* 120 */ - 545, - 407, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - 127, - /* 130 */ - -1, - -1, - 433, - 578, - 607, - -1, - 774, - -1, - 776, - -1, - /* 140 */ - -1, - -1, - -1, - -1, - 778, - -1, - 779, - -1, - 638, - -1, - /* 150 */ - -1, - -1, - -1, - -1, - 307, - -1, - -1, - -1, - 780, - -1, - /* 160 */ - -1, - -1, - -1, - -1, - 788, - -1, - -1, - -1, - -1, - 795, - /* 170 */ - 317, - 629, - -1, - -1, - 799, - -1, - 814, - -1, - -1, - -1, - /* 180 */ - 645, - 371, - -1, - -1, - -1, - -1, - 298, - -1, - -1, - 815, - /* 190 */ - -1, - 816, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - /* 200 */ - -1, - -1, - -1, - -1, - -1, - -1, - 818, - -1, - -1, - -1, - /* 210 */ - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - /* 220 */ - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - /* 230 */ - -1, - 490, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - /* 240 */ - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - 820, - -1, - /* 250 */ - -1, - 633, - -1, - -1, - -1, - -1, - -1, - -1, - 821, - -1, - /* 260 */ - -1, - 492, - -1, - 424, - -1, - -1, - -1, - 822, - -1, - -1, - /* 270 */ - 447, - -1, - -1, - 616, - -1, - -1, - 653, - -1, - -1, - -1, - /* 280 */ - 526, - -1, - -1, - -1, - 618, - -1, - -1, - 810, - -1, - -1, - /* 290 */ - -1, - 823, - 809, - -1, - 800, - -1, - 476, - 637, - -1, - 338, - /* 300 */ - -1, - 508, - -1, - -1, - 522, - -1, - -1, - -1, - 848, - 826, - /* 310 */ - -1, - -1, - 546, - -1, - ]; - - /* The next table maps tokens into fallback tokens. If a construct -** like the following: -** -** %fallback ID X Y Z. -** -** appears in the grammer, then ID becomes a fallback token for X, Y, -** and Z. Whenever one of the tokens X, Y, or Z is input to the parser -** but it does not parse, the type of the token is changed to ID and -** the parse is retried before an error is thrown. -*/ - static $yy_shift_ofst = [ - /* 0 */ - 353, - 29, - 50, - 177, - 196, - 201, - 67, - 178, - 210, - 389, - /* 10 */ - 410, - 441, - -2, - 482, - -2, - 62, - 24, - 62, - -2, - -2, - /* 20 */ - -2, - -2, - -2, - -2, - 62, - -2, - 500, - 592, - 568, - 592, - /* 30 */ - -2, - -1, - -2, - -2, - 592, - 592, - 288, - 592, - 288, - 592, - /* 40 */ - 688, - 592, - 688, - 592, - 688, - 592, - 166, - 592, - 166, - 592, - /* 50 */ - 677, - 592, - 677, - 592, - 677, - 592, - 20, - 592, - 20, - 592, - /* 60 */ - 20, - 592, - 20, - 592, - 288, - 592, - -2, - 592, - -2, - 592, - /* 70 */ - -2, - 592, - -2, - 592, - 20, - 592, - 20, - 592, - 20, - 592, - /* 80 */ - 20, - 592, - 20, - 592, - 20, - 592, - 663, - 379, - 592, - 109, - /* 90 */ - 592, - 663, - 555, - 372, - 322, - 469, - 110, - 588, - 370, - -2, - /* 100 */ - 588, - -2, - 358, - 595, - 597, - 382, - -2, - 630, - 386, - -2, - /* 110 */ - 630, - -2, - -2, - -2, - 600, - 385, - 630, - 460, - -2, - -2, - /* 120 */ - 464, - 630, - 467, - -2, - -2, - -2, - 634, - 667, - -2, - 12, - /* 130 */ - -2, - -2, - 588, - 283, - 668, - -2, - 592, - 325, - 592, - 325, - /* 140 */ - 326, - -2, - 647, - -2, - 592, - 359, - 592, - 359, - 495, - 147, - /* 150 */ - -2, - 684, - -2, - 683, - 696, - 685, - -2, - 699, - 592, - 203, - /* 160 */ - 714, - 710, - -2, - 712, - 592, - 246, - 734, - 713, - -2, - 592, - /* 170 */ - 63, - 161, - -2, - -2, - 592, - 280, - 592, - 325, - -2, - 192, - /* 180 */ - 733, - 398, - 325, - 729, - -2, - 564, - 566, - -2, - -2, - 592, - /* 190 */ - 109, - 592, - 109, - -2, - -2, - -2, - -2, - -2, - -2, - -2, - /* 200 */ - -2, - -2, - -2, - -2, - -2, - -2, - 592, - 325, - -2, - 760, - /* 210 */ - -2, - -2, - 755, - 761, - 766, - 763, - 486, - 767, - 782, - 785, - /* 220 */ - 531, - 792, - 797, - 804, - 540, - 802, - 807, - 808, - 831, - -2, - /* 230 */ - -2, - 469, - -2, - -2, - 465, - 583, - -2, - 97, - 832, - -2, - /* 240 */ - -2, - -2, - -2, - -2, - 721, - -2, - 825, - -2, - 592, - 109, - /* 250 */ - 819, - 372, - 747, - -2, - 838, - -2, - 288, - -2, - 592, - 325, - /* 260 */ - 835, - 592, - 864, - 592, - -2, - 325, - -2, - 592, - 325, - 849, - /* 270 */ - 588, - 498, - 854, - 592, - 828, - 909, - 592, - -2, - 325, - -2, - /* 280 */ - 870, - 839, - 858, - 862, - 592, - 840, - 912, - 870, - -2, - -2, - /* 290 */ - -2, - 67, - 728, - 933, - 62, - 936, - 588, - 444, - 880, - 588, - /* 300 */ - 904, - 588, - -2, - 939, - 592, - -2, - 325, - -2, - 67, - 728, - /* 310 */ - 950, - 914, - 588, - -2, - ]; - - /* -** Turn parser tracing on by giving a stream to which to write the trace -** and a prompt to preface each trace message. Tracing is turned off -** by making either argument NULL -** -** Inputs: -** -** -** Outputs: -** None. -*/ - public int $yyerrcnt = -1; - - /* For tracing shifts, the names of all terminals and nonterminals -** are required. The following table supplies these names */ - public int $yyidx = -1; - - /* For tracing reduce actions, the names of all rules are required. -*/ - public array $yystack = []; - - /* -** This function returns the symbolic name associated with a token -** value. -*/ - - public function __construct(private readonly Status $status) - { - } - - function __destruct() - { - while ($this->yyidx >= 0) { - $this->yy_pop_parser_stack(); - } - } - - /* The following function deletes the value associated with a -** symbol. The symbol can be either a terminal or nonterminal. -** "yymajor" is the symbol code, and "yypminor" is a pointer to -** the value. -*/ - - public function phql_( - $yymajor, /* The major token code number */ - $yyminor = null /* The value for the token */ - ): void - { - $yyendofinput = ($yymajor == 0); /* True if we are at the end of input */ - $yyerrorhit = 0; /* True if yymajor has invoked an error */ - - /* (re)initialize the parser, if necessary */ - if ($this->yyidx < 0) { - $this->yyidx = 0; - $this->yyerrcnt = -1; - $ent = new phql_yyStackEntry; - $ent->stateno = 0; - $ent->major = 0; - $this->yystack = [0 => $ent]; - - $this->YY_NO_ACTION = self::YYNSTATE + self::YYNRULE + 2; - $this->YY_ACCEPT_ACTION = self::YYNSTATE + self::YYNRULE + 1; - $this->YY_ERROR_ACTION = self::YYNSTATE + self::YYNRULE; - } - - if ($this->yyTraceFILE) { - fwrite($this->yyTraceFILE, sprintf( - "%sInput %s\n", - $this->yyTracePrompt, - self::$yyTokenName[$yymajor] - )); - } - - do { - $yyact = $this->yy_find_shift_action($yymajor); - if ($yyact < self::YYNSTATE) { - $this->yy_shift($yyact, $yymajor, $yyminor); - $this->yyerrcnt--; - if ($yyendofinput && $this->yyidx >= 0) { - $yymajor = 0; - } else { - $yymajor = self::YYNOCODE; - } - } else { - if ($yyact < self::YYNSTATE + self::YYNRULE) { - $this->yy_reduce($yyact - self::YYNSTATE); - } else { - if ($yyact == $this->YY_ERROR_ACTION) { - if ($this->yyTraceFILE) { - fwrite($this->yyTraceFILE, sprintf("%sSyntax Error!\n", $this->yyTracePrompt)); - } - if (self::YYERRORSYMBOL) { - /** - * A syntax error has occurred. - * The response to an error depends upon whether or not the - * grammar defines an error token "ERROR". - * - * This is what we do if the grammar does define ERROR: - * - * * Call the %syntax_error function. - * - * * Begin popping the stack until we enter a state where - * it is legal to shift the error symbol, then shift - * the error symbol. - * - * * Set the error count to three. - * - * * Begin accepting and shifting new tokens. No new error - * processing will occur until three tokens have been - * shifted successfully. - ** - */ - if ($this->yyerrcnt < 0) { - $this->yy_syntax_error(); - } - $yymx = $this->yystack[$this->yyidx]->major; - if ($yymx == self::YYERRORSYMBOL || $yyerrorhit) { - if ($this->yyTraceFILE) { - fwrite($this->yyTraceFILE, sprintf( - "%sDiscard input token %s\n", - $this->yyTracePrompt, - self::$yyTokenName[$yymajor] - )); - } - $this->yy_destructor($yymajor, $yyminor); - $yymajor = self::YYNOCODE; - } else { - while ( - $this->yyidx >= 0 && - $yymx != self::YYERRORSYMBOL && - ($yyact = $this->yy_find_reduce_action( - $this->yystack[$this->yyidx]->stateno, - self::YYERRORSYMBOL - )) >= self::YYNSTATE - ) { - $this->yy_pop_parser_stack(); - } - if ($this->yyidx < 0 || $yymajor == 0) { - $this->yy_destructor($yymajor, $yyminor); - $this->yy_parse_failed(); - $yymajor = self::YYNOCODE; - } else { - if ($yymx != self::YYERRORSYMBOL) { - $this->yy_shift($yyact, self::YYERRORSYMBOL, 0); - } - } - } - $this->yyerrcnt = 3; - $yyerrorhit = 1; - } else { /* YYERRORSYMBOL is not defined */ - /* This is what we do if the grammar does not define ERROR: - * - * * Report an error message, and throw away the input token. - * - * * If the input token is $, then fail the parse. - * - * As before, subsequent error messages are suppressed until - * three input tokens have been successfully shifted. - */ - if ($this->yyerrcnt <= 0) { - $this->yy_syntax_error(); - } - $this->yyerrcnt = 3; - $this->yy_destructor($yymajor, $yyminor); - if ($yyendofinput) { - $this->yy_parse_failed(); - } - $yymajor = self::YYNOCODE; - } - } else { - $this->yy_accept(); - $yymajor = self::YYNOCODE; - } - } - } - } while ($yymajor != self::YYNOCODE && $this->yyidx >= 0); - } - - /* -** Pop the parser's stack once. -** -** If there is a destructor routine associated with the token which -** is popped from the stack, then call it. -** -** Return the major token number for the symbol popped. -*/ - - function phql_TokenName(/* int */ $tokenType) - { - if (isset(self::$yyTokenName[$tokenType])) { - return self::$yyTokenName[$tokenType]; - } - - return "Unknown"; - } - - /* -** Deallocate and destroy a parser. Destructors are all called for -** all stack elements before shutting the parser down. -** -** Inputs: -** -*/ - - function phql_Trace($TraceFILE, $zTracePrompt = ''): void - { - $this->yyTraceFILE = $TraceFILE; - $this->yyTracePrompt = $zTracePrompt; - if ($this->yyTraceFILE === null) { - $this->yyTracePrompt = null; - } elseif ($this->yyTracePrompt === null) { - $this->yyTraceFILE = null; - } - } - - /* -** Find the appropriate action for a parser given the non-terminal -** look-ahead token iLookAhead. -** -** If the look-ahead token is YYNOCODE, then check to see if the action is -** independent of the look-ahead. If it is, return the action, otherwise -** return YY_NO_ACTION. -*/ - - private function yy_accept() - { - if ($this->yyTraceFILE) { - fwrite($this->yyTraceFILE, sprintf("%sAccept!\n", $this->yyTracePrompt)); - } - while ($this->yyidx >= 0) { - $this->yy_pop_parser_stack(); - } - /* Here code is inserted which will be executed whenever the - ** parser accepts */ - } - - /* -** Perform a shift action. -*/ - - private function yy_destructor($yymajor, $yypminor) - { - switch ($yymajor) { - /* Here is inserted the actions which take place when a - ** terminal or non-terminal is destroyed. This can happen - ** when the symbol is popped from the stack during a - ** reduce or during error processing or when a parser is - ** being destroyed before it is finished parsing. - ** - ** Note: during a reduce, the only symbols destroyed are those - ** which appear on the RHS of the rule, but which are not used - ** inside the C code. - */ - case 1: - case 2: - case 3: - case 4: - case 5: - case 6: - case 7: - case 8: - case 9: - case 10: - case 11: - case 12: - case 13: - case 14: - case 15: - case 16: - case 17: - case 18: - case 19: - case 20: - case 21: - case 22: - case 23: - case 24: - case 25: - case 26: - case 27: - case 28: - case 29: - case 30: - case 31: - case 32: - case 33: - case 34: - case 35: - case 36: - case 37: - case 38: - case 39: - case 40: - case 41: - case 42: - case 43: - case 44: - case 45: - case 46: - case 47: - case 48: - case 49: - case 50: - case 51: - case 52: - case 53: - case 54: - case 55: - case 56: - case 57: - case 58: - case 59: - case 60: - case 61: - case 62: - case 63: - case 64: - case 65: - case 66: - case 67: - case 68: - case 69: - case 70: - case 71: - case 72: - case 73: - case 74: - case 75: - case 76: - case 77: - case 78: - case 79: - case 80: - case 81: - case 82: - case 83: - case 84: - case 85: - case 86: - case 87: - case 88: - if (isset($yypminor->yy0)) { - if (($yypminor->yy0)->free_flag) { - unset(($yypminor->yy0)->token); - } - unset($yypminor->yy0); - } - break; - case 91: - case 92: - case 93: - case 94: - case 95: - case 96: - case 98: - case 104: - case 105: - case 107: - case 108: - case 109: - case 110: - case 111: - case 112: - case 113: - case 114: - case 118: - case 119: - case 121: - case 122: - case 124: - case 125: - case 126: - case 128: - case 129: - case 130: - case 131: - case 132: - case 133: - case 134: - case 136: - case 139: - case 142: - unset($yypminor->yy202); - break; - case 97: - case 99: - case 100: - case 101: - case 102: - case 103: - case 115: - case 116: - case 123: - case 140: - case 141: - unset($yypminor->yy202); - break; - default: - break; /* If no destructor action specified: do nothing */ - } - } - - private function yy_find_reduce_action( - $stateno, /* Current state number */ - $iLookAhead /* The look-ahead token */ - ) - { - if ( - $stateno > self::YY_REDUCE_MAX || - ($i = self::$yy_reduce_ofst[$stateno]) == self::YY_REDUCE_USE_DFLT - ) { - return self::$yy_default[$stateno]; - } - if ($iLookAhead == self::YYNOCODE) { - return $this->YY_NO_ACTION; - } - $i += $iLookAhead; - if ($i < 0 || $i >= count(self::$yy_action) || self::$yy_lookahead[$i] != $iLookAhead) { - return self::$yy_default[$stateno]; - } - - return self::$yy_action[$i]; - } - - private function yy_find_shift_action($iLookAhead) - { - $stateno = $this->yystack[$this->yyidx]->stateno; - - if ($stateno > self::YY_SHIFT_MAX || - ($i = self::$yy_shift_ofst[$stateno]) == self::YY_SHIFT_USE_DFLT) { - return self::$yy_default[$stateno]; - } - if ($iLookAhead == self::YYNOCODE) { - return $this->YY_NO_ACTION; - } - $i += $iLookAhead; - if ($i < 0 || $i >= count(self::$yy_action) || self::$yy_lookahead[$i] != $iLookAhead) { - if ($iLookAhead > 0) { - if ( - isset(self::$yyFallback[$iLookAhead]) && - ($iFallback = self::$yyFallback[$iLookAhead]) != 0 - ) { - if ($this->yyTraceFILE) { - fwrite($this->yyTraceFILE, sprintf( - "%sFALLBACK %s => %s\n", - $this->yyTracePrompt, - self::$yyTokenName[$iLookAhead], - self::$yyTokenName[$iFallback] - )); - } - return $this->yy_find_shift_action($iFallback); - } - { - $j = $i - $iLookAhead + self::YYWILDCARD; - if ($j >= 0 && $j < count(self::$yy_action) && self::$yy_lookahead[$j] == self::YYWILDCARD) { - if ($this->yyTraceFILE) { - fwrite($this->yyTraceFILE, sprintf( - "%sWILDCARD %s => %s\n", - $this->yyTracePrompt, - self::$yyTokenName[$iLookAhead], - self::$yyTokenName[self::YYWILDCARD] - )); - } - return self::$yy_action[$j]; - } - } - } - return self::$yy_default[$stateno]; - } - - return self::$yy_action[$i]; - } - - private function yy_parse_failed(): void - { - if ($this->yyTraceFILE) { - fwrite($this->yyTraceFILE, sprintf("%sFail!\n", $this->yyTracePrompt)); - } - while ($this->yyidx >= 0) { - $this->yy_pop_parser_stack(); - } - } - - private function yy_pop_parser_stack() - { - if ($this->yyidx < 0) { - return 0; - } - - $yytos = $this->yystack[$this->yyidx]; - - if ($this->yyTraceFILE) { - fwrite($this->yyTraceFILE, sprintf( - "%sPopping %s\n", - $this->yyTracePrompt, - self::$yyTokenName[$yytos->major] - )); - } - - $this->yy_destructor($yytos->major, $yytos->minor); - unset($this->yystack[$this->yyidx]); - $this->yyidx--; - - return $yytos->major; - } - - /** - * Perform a reduce action and the shift that must immediately - * follow the reduce. - * - * @param int $yyruleno Number of the rule by which to reduce - */ - private function yy_reduce(int $yyruleno): void - { - $yygotominor = []; /* The LHS of the rule reduced */ - if ($this->yyTraceFILE && isset(self::$yyRuleName[$yyruleno])) { - fwrite($this->yyTraceFILE, sprintf( - "%sReduce [%s].\n", - $this->yyTracePrompt, - self::$yyRuleName[$yyruleno] - )); - } - - switch ($yyruleno) { - /** Beginning here are the reduction cases. A typical example: - * - * case 0: - * #line - * { ... } // User supplied code - * #line - * break; - */ - case 0: - $yygotominor = $this->yystack[$this->yyidx + 0]->minor; - $this->status->setAst($this->yystack[$this->yyidx + 0]->minor); - break; - case 1: - case 2: - case 3: - case 4: - case 18: - case 19: - case 22: - case 23: - case 43: - case 50: - case 52: - case 65: - case 67: - case 73: - case 80: - case 81: - case 141: - case 145: - case 150: - case 158: - $yygotominor = $this->yystack[$this->yyidx + 0]->minor; - break; - case 5: - phql_ret_select_statement( - $yygotominor, - $this->yystack[$this->yyidx + -6]->minor, - $this->yystack[$this->yyidx + -5]->minor, - $this->yystack[$this->yyidx + -2]->minor, - $this->yystack[$this->yyidx + -4]->minor, - $this->yystack[$this->yyidx + -3]->minor, - $this->yystack[$this->yyidx + -1]->minor, - $this->yystack[$this->yyidx + 0]->minor - ); - break; - case 6: - { - phql_ret_select_clause( - $yygotominor, - $this->yystack[$this->yyidx + -4]->minor, - $this->yystack[$this->yyidx + -3]->minor, - $this->yystack[$this->yyidx + -1]->minor, - $this->yystack[$this->yyidx + 0]->minor - ); - $this->yy_destructor(36, $this->yystack[$this->yyidx + -5]->minor); - $this->yy_destructor(37, $this->yystack[$this->yyidx + -2]->minor); - } - break; - case 7: - $yygotominor = 1; - $this->yy_destructor(38, $this->yystack[$this->yyidx + 0]->minor); - break; - case 8: - $yygotominor = 0; - $this->yy_destructor(39, $this->yystack[$this->yyidx + 0]->minor); - break; - case 9: - // distinct_all ::= (no DISTINCT or ALL keyword) - no distinct - $yygotominor = null; - break; - case 144: - // distinct_or_null ::= (no DISTINCT keyword in function call) - $yygotominor = null; - break; - case 69: - case 71: - case 78: - case 83: - case 85: - case 89: - case 91: - case 146: - // Empty optional clause (where, limit, order, group, having, for_update, etc.) - // Matches cphalcon ZVAL_UNDEF — must be null so phql_ret_*_statement skips adding the key - $yygotominor = null; - break; - case 20: - $yygotominor = []; - break; - case 27: - // join_associated_name ::= (empty) - no alias - // Matches cphalcon ZVAL_UNDEF so phql_ret_join_item skips the key - $yygotominor = null; - break; - case 38: - $yygotominor = null; - break; - case 10: - case 17: - case 41: - case 44: - case 49: - case 64: - case 72: - case 79: - case 147: - phql_ret_zval_list( - $yygotominor, - $this->yystack[$this->yyidx + -2]->minor, - $this->yystack[$this->yyidx + 0]->minor - ); - $this->yy_destructor(35, $this->yystack[$this->yyidx + -1]->minor); - break; - case 11: - case 42: - case 45: - case 138: - case 148: - phql_ret_zval_list($yygotominor, $this->yystack[$this->yyidx + 0]->minor); - break; - case 12: - case 149: - phql_ret_column_item($yygotominor, Opcode::STARALL->value); - $this->yy_destructor(22, $this->yystack[$this->yyidx + 0]->minor); - break; - case 13: - phql_ret_column_item( - $yygotominor, - Opcode::DOMAINALL->value, - null, - $this->yystack[$this->yyidx + -2]->minor, - ); - $this->yy_destructor(41, $this->yystack[$this->yyidx + -1]->minor); - $this->yy_destructor(22, $this->yystack[$this->yyidx + 0]->minor); - break; - case 14: - phql_ret_column_item( - $yygotominor, - Opcode::EXPR->value, - $this->yystack[$this->yyidx + -2]->minor, - null, - $this->yystack[$this->yyidx + 0]->minor - ); - $this->yy_destructor(42, $this->yystack[$this->yyidx + -1]->minor); - break; - case 15: - phql_ret_column_item( - $yygotominor, - Opcode::EXPR->value, - $this->yystack[$this->yyidx + -1]->minor, - null, - $this->yystack[$this->yyidx + 0]->minor - ); - break; - case 16: - phql_ret_column_item( - $yygotominor, - Opcode::EXPR->value, - $this->yystack[$this->yyidx + 0]->minor, - ); - break; - case 21: - case 137: - phql_ret_zval_list( - $yygotominor, - $this->yystack[$this->yyidx + -1]->minor, - $this->yystack[$this->yyidx + 0]->minor - ); - break; - case 24: - phql_ret_join_item( - $yygotominor, - $this->yystack[$this->yyidx + -3]->minor, - $this->yystack[$this->yyidx + -2]->minor, - $this->yystack[$this->yyidx + -1]->minor, - $this->yystack[$this->yyidx + 0]->minor - ); - break; - case 25: - phql_ret_qualified_name($yygotominor, null, null, $this->yystack[$this->yyidx + 0]->minor); - $this->yy_destructor(42, $this->yystack[$this->yyidx + -1]->minor); - break; - case 26: - case 46: - case 66: - case 170: - phql_ret_qualified_name($yygotominor, null, null, $this->yystack[$this->yyidx + 0]->minor); - break; - case 28: - $yygotominor = Opcode::INNERJOIN->value; - $this->yy_destructor(43, $this->yystack[$this->yyidx + -1]->minor); - $this->yy_destructor(44, $this->yystack[$this->yyidx + 0]->minor); - break; - case 29: - $yygotominor = Opcode::CROSSJOIN->value; - $this->yy_destructor(45, $this->yystack[$this->yyidx + -1]->minor); - $this->yy_destructor(44, $this->yystack[$this->yyidx + 0]->minor); - break; - case 30: - $yygotominor = Opcode::LEFTJOIN->value; - $this->yy_destructor(46, $this->yystack[$this->yyidx + -2]->minor); - $this->yy_destructor(47, $this->yystack[$this->yyidx + -1]->minor); - $this->yy_destructor(44, $this->yystack[$this->yyidx + 0]->minor); - break; - case 31: - $yygotominor = Opcode::LEFTJOIN->value; - $this->yy_destructor(46, $this->yystack[$this->yyidx + -1]->minor); - $this->yy_destructor(44, $this->yystack[$this->yyidx + 0]->minor); - break; - case 32: - $yygotominor = Opcode::RIGHTJOIN->value; - $this->yy_destructor(48, $this->yystack[$this->yyidx + -2]->minor); - $this->yy_destructor(47, $this->yystack[$this->yyidx + -1]->minor); - $this->yy_destructor(44, $this->yystack[$this->yyidx + 0]->minor); - break; - case 33: - $yygotominor = Opcode::RIGHTJOIN->value; - $this->yy_destructor(48, $this->yystack[$this->yyidx + -1]->minor); - $this->yy_destructor(44, $this->yystack[$this->yyidx + 0]->minor); - break; - case 34: - $yygotominor = Opcode::FULLJOIN->value; - $this->yy_destructor(49, $this->yystack[$this->yyidx + -2]->minor); - $this->yy_destructor(47, $this->yystack[$this->yyidx + -1]->minor); - $this->yy_destructor(44, $this->yystack[$this->yyidx + 0]->minor); - break; - case 35: - $yygotominor = Opcode::FULLJOIN->value; - $this->yy_destructor(49, $this->yystack[$this->yyidx + -1]->minor); - $this->yy_destructor(44, $this->yystack[$this->yyidx + 0]->minor); - break; - case 36: - $yygotominor = Opcode::INNERJOIN->value; - $this->yy_destructor(44, $this->yystack[$this->yyidx + 0]->minor); - break; - case 37: - $yygotominor = $this->yystack[$this->yyidx + 0]->minor; - $this->yy_destructor(50, $this->yystack[$this->yyidx + -1]->minor); - break; - case 39: - phql_ret_insert_statement( - $yygotominor, - $this->yystack[$this->yyidx + -4]->minor, - null, - $this->yystack[$this->yyidx + -1]->minor - ); - $this->yy_destructor(51, $this->yystack[$this->yyidx + -6]->minor); - $this->yy_destructor(52, $this->yystack[$this->yyidx + -5]->minor); - $this->yy_destructor(53, $this->yystack[$this->yyidx + -3]->minor); - $this->yy_destructor(54, $this->yystack[$this->yyidx + -2]->minor); - $this->yy_destructor(55, $this->yystack[$this->yyidx + 0]->minor); - break; - case 40: - phql_ret_insert_statement( - $yygotominor, - $this->yystack[$this->yyidx + -7]->minor, - $this->yystack[$this->yyidx + -5]->minor, - $this->yystack[$this->yyidx + -1]->minor - ); - $this->yy_destructor(51, $this->yystack[$this->yyidx + -9]->minor); - $this->yy_destructor(52, $this->yystack[$this->yyidx + -8]->minor); - $this->yy_destructor(54, $this->yystack[$this->yyidx + -6]->minor); - $this->yy_destructor(55, $this->yystack[$this->yyidx + -4]->minor); - $this->yy_destructor(53, $this->yystack[$this->yyidx + -3]->minor); - $this->yy_destructor(54, $this->yystack[$this->yyidx + -2]->minor); - $this->yy_destructor(55, $this->yystack[$this->yyidx + 0]->minor); - break; - case 47: - phql_ret_update_statement( - $yygotominor, - $this->yystack[$this->yyidx + -2]->minor, - $this->yystack[$this->yyidx + -1]->minor, - $this->yystack[$this->yyidx + 0]->minor - ); - break; - case 48: - phql_ret_update_clause( - $yygotominor, - $this->yystack[$this->yyidx + -3]->minor, - $this->yystack[$this->yyidx + -2]->minor, - $this->yystack[$this->yyidx + 0]->minor - ); - $this->yy_destructor(56, $this->yystack[$this->yyidx + -4]->minor); - $this->yy_destructor(57, $this->yystack[$this->yyidx + -1]->minor); - break; - case 51: - phql_ret_update_item( - $yygotominor, - $this->yystack[$this->yyidx + -2]->minor, - $this->yystack[$this->yyidx + 0]->minor - ); - $this->yy_destructor(4, $this->yystack[$this->yyidx + -1]->minor); - break; - case 53: - phql_ret_delete_statement( - $yygotominor, - $this->yystack[$this->yyidx + -2]->minor, - $this->yystack[$this->yyidx + -1]->minor, - $this->yystack[$this->yyidx + 0]->minor - ); - break; - case 54: - phql_ret_delete_clause($yygotominor, $this->yystack[$this->yyidx + 0]->minor); - $this->yy_destructor(58, $this->yystack[$this->yyidx + -2]->minor); - $this->yy_destructor(37, $this->yystack[$this->yyidx + -1]->minor); - break; - case 55: - phql_ret_assoc_name( - $yygotominor, - $this->yystack[$this->yyidx + -2]->minor, - $this->yystack[$this->yyidx + 0]->minor, - ); - $this->yy_destructor(42, $this->yystack[$this->yyidx + -1]->minor); - break; - case 56: - phql_ret_assoc_name( - $yygotominor, - $this->yystack[$this->yyidx + -1]->minor, - $this->yystack[$this->yyidx + 0]->minor, - ); - break; - case 57: - phql_ret_assoc_name($yygotominor, $this->yystack[$this->yyidx + 0]->minor); - break; - case 58: - phql_ret_assoc_name( - $yygotominor, - $this->yystack[$this->yyidx + -4]->minor, - $this->yystack[$this->yyidx + -2]->minor, - $this->yystack[$this->yyidx + 0]->minor - ); - $this->yy_destructor(42, $this->yystack[$this->yyidx + -3]->minor); - $this->yy_destructor(59, $this->yystack[$this->yyidx + -1]->minor); - break; - case 59: - phql_ret_assoc_name( - $yygotominor, - $this->yystack[$this->yyidx + -6]->minor, - $this->yystack[$this->yyidx + -4]->minor, - $this->yystack[$this->yyidx + -1]->minor - ); - $this->yy_destructor(42, $this->yystack[$this->yyidx + -5]->minor); - $this->yy_destructor(59, $this->yystack[$this->yyidx + -3]->minor); - $this->yy_destructor(54, $this->yystack[$this->yyidx + -2]->minor); - $this->yy_destructor(55, $this->yystack[$this->yyidx + 0]->minor); - break; - case 60: - phql_ret_assoc_name( - $yygotominor, - $this->yystack[$this->yyidx + -5]->minor, - $this->yystack[$this->yyidx + -4]->minor, - $this->yystack[$this->yyidx + -1]->minor - ); - $this->yy_destructor(59, $this->yystack[$this->yyidx + -3]->minor); - $this->yy_destructor(54, $this->yystack[$this->yyidx + -2]->minor); - $this->yy_destructor(55, $this->yystack[$this->yyidx + 0]->minor); - break; - case 61: - phql_ret_assoc_name( - $yygotominor, - $this->yystack[$this->yyidx + -3]->minor, - $this->yystack[$this->yyidx + -2]->minor, - $this->yystack[$this->yyidx + 0]->minor - ); - $this->yy_destructor(59, $this->yystack[$this->yyidx + -1]->minor); - break; - case 62: - phql_ret_assoc_name( - $yygotominor, - $this->yystack[$this->yyidx + -4]->minor, - null, - $this->yystack[$this->yyidx + -1]->minor - ); - $this->yy_destructor(59, $this->yystack[$this->yyidx + -3]->minor); - $this->yy_destructor(54, $this->yystack[$this->yyidx + -2]->minor); - $this->yy_destructor(55, $this->yystack[$this->yyidx + 0]->minor); - break; - case 63: - phql_ret_assoc_name( - $yygotominor, - $this->yystack[$this->yyidx + -2]->minor, - null, - $this->yystack[$this->yyidx + 0]->minor - ); - $this->yy_destructor(59, $this->yystack[$this->yyidx + -1]->minor); - break; - case 68: - $yygotominor = $this->yystack[$this->yyidx + 0]->minor; - $this->yy_destructor(60, $this->yystack[$this->yyidx + -1]->minor); - break; - case 70: - $yygotominor = $this->yystack[$this->yyidx + 0]->minor; - $this->yy_destructor(61, $this->yystack[$this->yyidx + -2]->minor); - $this->yy_destructor(62, $this->yystack[$this->yyidx + -1]->minor); - break; - case 74: - phql_ret_order_item($yygotominor, $this->yystack[$this->yyidx + 0]->minor); - break; - case 75: - phql_ret_order_item($yygotominor, $this->yystack[$this->yyidx + -1]->minor, Opcode::ASC->value); - $this->yy_destructor(63, $this->yystack[$this->yyidx + 0]->minor); - break; - case 76: - phql_ret_order_item($yygotominor, $this->yystack[$this->yyidx + -1]->minor, Opcode::DESC->value); - $this->yy_destructor(64, $this->yystack[$this->yyidx + 0]->minor); - break; - case 77: - $yygotominor = $this->yystack[$this->yyidx + 0]->minor; - $this->yy_destructor(65, $this->yystack[$this->yyidx + -2]->minor); - $this->yy_destructor(62, $this->yystack[$this->yyidx + -1]->minor); - break; - case 82: - $yygotominor = $this->yystack[$this->yyidx + 0]->minor; - $this->yy_destructor(66, $this->yystack[$this->yyidx + -1]->minor); - break; - case 84: - $yygotominor = true; - $this->yy_destructor(67, $this->yystack[$this->yyidx + -1]->minor); - $this->yy_destructor(56, $this->yystack[$this->yyidx + 0]->minor); - break; - case 86: - case 90: - phql_ret_limit_clause($yygotominor, $this->yystack[$this->yyidx + 0]->minor, null); - $this->yy_destructor(68, $this->yystack[$this->yyidx + -1]->minor); - break; - case 87: - phql_ret_limit_clause( - $yygotominor, - $this->yystack[$this->yyidx + 0]->minor, - $this->yystack[$this->yyidx + -2]->minor - ); - $this->yy_destructor(68, $this->yystack[$this->yyidx + -3]->minor); - $this->yy_destructor(35, $this->yystack[$this->yyidx + -1]->minor); - break; - case 88: - phql_ret_limit_clause( - $yygotominor, - $this->yystack[$this->yyidx + -2]->minor, - $this->yystack[$this->yyidx + 0]->minor - ); - $this->yy_destructor(68, $this->yystack[$this->yyidx + -3]->minor); - $this->yy_destructor(69, $this->yystack[$this->yyidx + -1]->minor); - break; - case 92: - case 159: - phql_ret_literal_zval( - $yygotominor, - Opcode::INTEGER->value, - $this->yystack[$this->yyidx + 0]->minor - ); - break; - case 93: - case 160: - phql_ret_literal_zval( - $yygotominor, - Opcode::HINTEGER->value, - $this->yystack[$this->yyidx + 0]->minor - ); - break; - case 94: - case 166: - phql_ret_placeholder_zval( - $yygotominor, - Opcode::NPLACEHOLDER->value, - $this->yystack[$this->yyidx + 0]->minor - ); - break; - case 95: - case 167: - phql_ret_placeholder_zval( - $yygotominor, - Opcode::SPLACEHOLDER->value, - $this->yystack[$this->yyidx + 0]->minor - ); - break; - case 96: - case 168: - phql_ret_placeholder_zval( - $yygotominor, - Opcode::BPLACEHOLDER->value, - $this->yystack[$this->yyidx + 0]->minor - ); - break; - case 97: - phql_ret_expr($yygotominor, Opcode::MINUS->value, null, $this->yystack[$this->yyidx + 0]->minor); - $this->yy_destructor(25, $this->yystack[$this->yyidx + -1]->minor); - break; - case 98: - phql_ret_expr( - $yygotominor, - Opcode::SUB->value, - $this->yystack[$this->yyidx + -2]->minor, - $this->yystack[$this->yyidx + 0]->minor - ); - $this->yy_destructor(25, $this->yystack[$this->yyidx + -1]->minor); - break; - case 99: - phql_ret_expr( - $yygotominor, - Opcode::ADD->value, - $this->yystack[$this->yyidx + -2]->minor, - $this->yystack[$this->yyidx + 0]->minor - ); - $this->yy_destructor(24, $this->yystack[$this->yyidx + -1]->minor); - break; - case 100: - phql_ret_expr( - $yygotominor, - Opcode::MUL->value, - $this->yystack[$this->yyidx + -2]->minor, - $this->yystack[$this->yyidx + 0]->minor - ); - $this->yy_destructor(22, $this->yystack[$this->yyidx + -1]->minor); - break; - case 101: - phql_ret_expr( - $yygotominor, - Opcode::DIV->value, - $this->yystack[$this->yyidx + -2]->minor, - $this->yystack[$this->yyidx + 0]->minor - ); - $this->yy_destructor(21, $this->yystack[$this->yyidx + -1]->minor); - break; - case 102: - phql_ret_expr( - $yygotominor, - Opcode::MOD->value, - $this->yystack[$this->yyidx + -2]->minor, - $this->yystack[$this->yyidx + 0]->minor - ); - $this->yy_destructor(23, $this->yystack[$this->yyidx + -1]->minor); - break; - case 103: - phql_ret_expr( - $yygotominor, - Opcode::AND->value, - $this->yystack[$this->yyidx + -2]->minor, - $this->yystack[$this->yyidx + 0]->minor - ); - $this->yy_destructor(14, $this->yystack[$this->yyidx + -1]->minor); - break; - case 104: - phql_ret_expr( - $yygotominor, - Opcode::OR->value, - $this->yystack[$this->yyidx + -2]->minor, - $this->yystack[$this->yyidx + 0]->minor - ); - $this->yy_destructor(15, $this->yystack[$this->yyidx + -1]->minor); - break; - case 105: - phql_ret_expr( - $yygotominor, - Opcode::BITWISE_AND->value, - $this->yystack[$this->yyidx + -2]->minor, - $this->yystack[$this->yyidx + 0]->minor - ); - $this->yy_destructor(18, $this->yystack[$this->yyidx + -1]->minor); - break; - case 106: - phql_ret_expr( - $yygotominor, - Opcode::BITWISE_OR->value, - $this->yystack[$this->yyidx + -2]->minor, - $this->yystack[$this->yyidx + 0]->minor - ); - $this->yy_destructor(19, $this->yystack[$this->yyidx + -1]->minor); - break; - case 107: - phql_ret_expr( - $yygotominor, - Opcode::BITWISE_XOR->value, - $this->yystack[$this->yyidx + -2]->minor, - $this->yystack[$this->yyidx + 0]->minor - ); - $this->yy_destructor(20, $this->yystack[$this->yyidx + -1]->minor); - break; - case 108: - phql_ret_expr( - $yygotominor, - Opcode::OP_MATCHES->value, - $this->yystack[$this->yyidx + -2]->minor, - $this->yystack[$this->yyidx + 0]->minor - ); - $this->yy_destructor(10, $this->yystack[$this->yyidx + -1]->minor); - break; - case 109: - phql_ret_expr( - $yygotominor, - Opcode::OP_CONTAINS->value, - $this->yystack[$this->yyidx + -2]->minor, - $this->yystack[$this->yyidx + 0]->minor - ); - $this->yy_destructor(11, $this->yystack[$this->yyidx + -1]->minor); - break; - case 110: - phql_ret_expr( - $yygotominor, - Opcode::OP_CONTAINED->value, - $this->yystack[$this->yyidx + -2]->minor, - $this->yystack[$this->yyidx + 0]->minor - ); - $this->yy_destructor(12, $this->yystack[$this->yyidx + -1]->minor); - break; - case 111: - phql_ret_expr( - $yygotominor, - Opcode::OP_OVERLAPS->value, - $this->yystack[$this->yyidx + -2]->minor, - $this->yystack[$this->yyidx + 0]->minor - ); - $this->yy_destructor(13, $this->yystack[$this->yyidx + -1]->minor); - break; - case 112: - phql_ret_expr( - $yygotominor, - Opcode::OP_CONCAT->value, - $this->yystack[$this->yyidx + -2]->minor, - $this->yystack[$this->yyidx + 0]->minor - ); - $this->yy_destructor(26, $this->yystack[$this->yyidx + -1]->minor); - break; - case 113: - phql_ret_expr( - $yygotominor, - Opcode::OP_JSON_GET->value, - $this->yystack[$this->yyidx + -2]->minor, - $this->yystack[$this->yyidx + 0]->minor - ); - $this->yy_destructor(31, $this->yystack[$this->yyidx + -1]->minor); - break; - case 114: - phql_ret_expr( - $yygotominor, - Opcode::OP_JSON_GET_TEXT->value, - $this->yystack[$this->yyidx + -2]->minor, - $this->yystack[$this->yyidx + 0]->minor - ); - $this->yy_destructor(32, $this->yystack[$this->yyidx + -1]->minor); - break; - case 115: - phql_ret_expr( - $yygotominor, - Opcode::OP_JSON_PATH->value, - $this->yystack[$this->yyidx + -2]->minor, - $this->yystack[$this->yyidx + 0]->minor - ); - $this->yy_destructor(33, $this->yystack[$this->yyidx + -1]->minor); - break; - case 116: - phql_ret_expr( - $yygotominor, - Opcode::OP_JSON_PATH_TEXT->value, - $this->yystack[$this->yyidx + -2]->minor, - $this->yystack[$this->yyidx + 0]->minor - ); - $this->yy_destructor(34, $this->yystack[$this->yyidx + -1]->minor); - break; - case 117: - phql_ret_expr( - $yygotominor, - Opcode::EQUALS->value, - $this->yystack[$this->yyidx + -2]->minor, - $this->yystack[$this->yyidx + 0]->minor - ); - $this->yy_destructor(4, $this->yystack[$this->yyidx + -1]->minor); - break; - case 118: - phql_ret_expr( - $yygotominor, - Opcode::NOTEQUALS->value, - $this->yystack[$this->yyidx + -2]->minor, - $this->yystack[$this->yyidx + 0]->minor - ); - $this->yy_destructor(5, $this->yystack[$this->yyidx + -1]->minor); - break; - case 119: - phql_ret_expr( - $yygotominor, - Opcode::LESS->value, - $this->yystack[$this->yyidx + -2]->minor, - $this->yystack[$this->yyidx + 0]->minor - ); - $this->yy_destructor(6, $this->yystack[$this->yyidx + -1]->minor); - break; - case 120: - phql_ret_expr( - $yygotominor, - Opcode::GREATER->value, - $this->yystack[$this->yyidx + -2]->minor, - $this->yystack[$this->yyidx + 0]->minor - ); - $this->yy_destructor(7, $this->yystack[$this->yyidx + -1]->minor); - break; - case 121: - phql_ret_expr( - $yygotominor, - Opcode::GREATEREQUAL->value, - $this->yystack[$this->yyidx + -2]->minor, - $this->yystack[$this->yyidx + 0]->minor - ); - $this->yy_destructor(8, $this->yystack[$this->yyidx + -1]->minor); - break; - case 122: - phql_ret_expr( - $yygotominor, - Opcode::LESSEQUAL->value, - $this->yystack[$this->yyidx + -2]->minor, - $this->yystack[$this->yyidx + 0]->minor - ); - $this->yy_destructor(9, $this->yystack[$this->yyidx + -1]->minor); - break; - case 123: - phql_ret_expr( - $yygotominor, - Opcode::LIKE->value, - $this->yystack[$this->yyidx + -2]->minor, - $this->yystack[$this->yyidx + 0]->minor - ); - $this->yy_destructor(16, $this->yystack[$this->yyidx + -1]->minor); - break; - case 124: - phql_ret_expr( - $yygotominor, - Opcode::NLIKE->value, - $this->yystack[$this->yyidx + -3]->minor, - $this->yystack[$this->yyidx + 0]->minor - ); - $this->yy_destructor(29, $this->yystack[$this->yyidx + -2]->minor); - $this->yy_destructor(16, $this->yystack[$this->yyidx + -1]->minor); - break; - case 125: - phql_ret_expr( - $yygotominor, - Opcode::ILIKE->value, - $this->yystack[$this->yyidx + -2]->minor, - $this->yystack[$this->yyidx + 0]->minor - ); - $this->yy_destructor(17, $this->yystack[$this->yyidx + -1]->minor); - break; - case 126: - phql_ret_expr( - $yygotominor, - Opcode::NILIKE->value, - $this->yystack[$this->yyidx + -3]->minor, - $this->yystack[$this->yyidx + 0]->minor - ); - $this->yy_destructor(29, $this->yystack[$this->yyidx + -2]->minor); - $this->yy_destructor(17, $this->yystack[$this->yyidx + -1]->minor); - break; - case 127: - case 130: - phql_ret_expr( - $yygotominor, - Opcode::IN->value, - $this->yystack[$this->yyidx + -4]->minor, - $this->yystack[$this->yyidx + -1]->minor - ); - $this->yy_destructor(28, $this->yystack[$this->yyidx + -3]->minor); - $this->yy_destructor(54, $this->yystack[$this->yyidx + -2]->minor); - $this->yy_destructor(55, $this->yystack[$this->yyidx + 0]->minor); - break; - case 128: - case 131: - phql_ret_expr( - $yygotominor, - Opcode::NOTIN->value, - $this->yystack[$this->yyidx + -5]->minor, - $this->yystack[$this->yyidx + -1]->minor - ); - $this->yy_destructor(29, $this->yystack[$this->yyidx + -4]->minor); - $this->yy_destructor(28, $this->yystack[$this->yyidx + -3]->minor); - $this->yy_destructor(54, $this->yystack[$this->yyidx + -2]->minor); - $this->yy_destructor(55, $this->yystack[$this->yyidx + 0]->minor); - break; - case 129: - phql_ret_expr( - $yygotominor, - Opcode::SUBQUERY->value, - $this->yystack[$this->yyidx + -1]->minor, - null - ); - $this->yy_destructor(54, $this->yystack[$this->yyidx + -2]->minor); - $this->yy_destructor(55, $this->yystack[$this->yyidx + 0]->minor); - break; - case 132: - phql_ret_expr($yygotominor, Opcode::EXISTS->value, null, $this->yystack[$this->yyidx + -1]->minor); - $this->yy_destructor(75, $this->yystack[$this->yyidx + -3]->minor); - $this->yy_destructor(54, $this->yystack[$this->yyidx + -2]->minor); - $this->yy_destructor(55, $this->yystack[$this->yyidx + 0]->minor); - break; - case 133: - phql_ret_expr( - $yygotominor, - Opcode::AGAINST->value, - $this->yystack[$this->yyidx + -2]->minor, - $this->yystack[$this->yyidx + 0]->minor - ); - $this->yy_destructor(1, $this->yystack[$this->yyidx + -1]->minor); - break; - case 134: - $qualified = []; - phql_ret_raw_qualified_name($qualified, $this->yystack[$this->yyidx + -1]->minor); - phql_ret_expr( - $yygotominor, - Opcode::CAST->value, - $this->yystack[$this->yyidx + -3]->minor, - $qualified - ); - $this->yy_destructor(76, $this->yystack[$this->yyidx + -5]->minor); - $this->yy_destructor(54, $this->yystack[$this->yyidx + -4]->minor); - $this->yy_destructor(42, $this->yystack[$this->yyidx + -2]->minor); - $this->yy_destructor(55, $this->yystack[$this->yyidx + 0]->minor); - break; - case 135: - $qualified = []; - phql_ret_raw_qualified_name($qualified, $this->yystack[$this->yyidx + -1]->minor, null); - phql_ret_expr( - $yygotominor, - Opcode::CONVERT->value, - $this->yystack[$this->yyidx + -3]->minor, - $qualified - ); - $this->yy_destructor(77, $this->yystack[$this->yyidx + -5]->minor); - $this->yy_destructor(54, $this->yystack[$this->yyidx + -4]->minor); - $this->yy_destructor(78, $this->yystack[$this->yyidx + -2]->minor); - $this->yy_destructor(55, $this->yystack[$this->yyidx + 0]->minor); - break; - case 136: - phql_ret_expr( - $yygotominor, - Opcode::CASE->value, - $this->yystack[$this->yyidx + -2]->minor, - $this->yystack[$this->yyidx + -1]->minor - ); - $this->yy_destructor(79, $this->yystack[$this->yyidx + -3]->minor); - $this->yy_destructor(80, $this->yystack[$this->yyidx + 0]->minor); - break; - case 139: - phql_ret_expr( - $yygotominor, - Opcode::WHEN->value, - $this->yystack[$this->yyidx + -2]->minor, - $this->yystack[$this->yyidx + 0]->minor - ); - $this->yy_destructor(81, $this->yystack[$this->yyidx + -3]->minor); - $this->yy_destructor(82, $this->yystack[$this->yyidx + -1]->minor); - break; - case 140: - phql_ret_expr($yygotominor, Opcode::ELSE->value, $this->yystack[$this->yyidx + 0]->minor, null); - $this->yy_destructor(83, $this->yystack[$this->yyidx + -1]->minor); - break; - case 142: - phql_ret_func_call( - $yygotominor, - $this->yystack[$this->yyidx + -4]->minor, - $this->yystack[$this->yyidx + -1]->minor, - $this->yystack[$this->yyidx + -2]->minor - ); - $this->yy_destructor(54, $this->yystack[$this->yyidx + -3]->minor); - $this->yy_destructor(55, $this->yystack[$this->yyidx + 0]->minor); - break; - case 143: - // distinct_or_null ::= DISTINCT (DISTINCT keyword present in function call) - $yygotominor = true; - $this->yy_destructor(38, $this->yystack[$this->yyidx + 0]->minor); - break; - case 151: - phql_ret_expr($yygotominor, Opcode::ISNULL->value, $this->yystack[$this->yyidx + -2]->minor, null); - $this->yy_destructor(27, $this->yystack[$this->yyidx + -1]->minor); - $this->yy_destructor(84, $this->yystack[$this->yyidx + 0]->minor); - break; - case 152: - phql_ret_expr( - $yygotominor, - Opcode::ISNOTNULL->value, - $this->yystack[$this->yyidx + -3]->minor, - null - ); - $this->yy_destructor(27, $this->yystack[$this->yyidx + -2]->minor); - $this->yy_destructor(29, $this->yystack[$this->yyidx + -1]->minor); - $this->yy_destructor(84, $this->yystack[$this->yyidx + 0]->minor); - break; - case 153: - phql_ret_expr( - $yygotominor, - Opcode::BETWEEN->value, - $this->yystack[$this->yyidx + -2]->minor, - $this->yystack[$this->yyidx + 0]->minor - ); - $this->yy_destructor(2, $this->yystack[$this->yyidx + -1]->minor); - break; - case 154: - phql_ret_expr( - $yygotominor, - Opcode::BETWEEN_NOT->value, - $this->yystack[$this->yyidx + -2]->minor, - $this->yystack[$this->yyidx + 0]->minor - ); - $this->yy_destructor(3, $this->yystack[$this->yyidx + -1]->minor); - break; - case 155: - phql_ret_expr($yygotominor, Opcode::NOT->value, null, $this->yystack[$this->yyidx + 0]->minor); - $this->yy_destructor(29, $this->yystack[$this->yyidx + -1]->minor); - break; - case 156: - phql_ret_expr( - $yygotominor, - Opcode::BITWISE_NOT->value, - null, - $this->yystack[$this->yyidx + 0]->minor - ); - $this->yy_destructor(30, $this->yystack[$this->yyidx + -1]->minor); - break; - case 157: - phql_ret_expr( - $yygotominor, - Opcode::ENCLOSED->value, - $this->yystack[$this->yyidx + -1]->minor, - null - ); - $this->yy_destructor(54, $this->yystack[$this->yyidx + -2]->minor); - $this->yy_destructor(55, $this->yystack[$this->yyidx + 0]->minor); - break; - case 161: - phql_ret_literal_zval($yygotominor, Opcode::STRING->value, $this->yystack[$this->yyidx + 0]->minor); - break; - case 162: - phql_ret_literal_zval($yygotominor, Opcode::DOUBLE->value, $this->yystack[$this->yyidx + 0]->minor); - break; - case 163: - phql_ret_literal_zval($yygotominor, Opcode::NULL->value); - $this->yy_destructor(84, $this->yystack[$this->yyidx + 0]->minor); - break; - case 164: -#line 920 "c/parser.php.lemon" - { - phql_ret_literal_zval($yygotominor, Opcode::TRUE->value, null); - $this->yy_destructor(87, $this->yystack[$this->yyidx + 0]->minor); - } -#line 2086 "c/parser.php.php" - break; - case 165: -#line 924 "c/parser.php.lemon" - { - phql_ret_literal_zval($yygotominor, Opcode::FALSE->value, null); - $this->yy_destructor(88, $this->yystack[$this->yyidx + 0]->minor); - } -#line 2094 "c/parser.php.php" - break; - case 169: -#line 947 "c/parser.php.lemon" - { - phql_ret_qualified_name( - $yygotominor, - null, - $this->yystack[$this->yyidx + -2]->minor, - $this->yystack[$this->yyidx + 0]->minor - ); - $this->yy_destructor(41, $this->yystack[$this->yyidx + -1]->minor); - } -#line 2102 "c/parser.php.php" - break; - } - $yygoto = self::$yyRuleInfo[2 * $yyruleno]; - $yysize = self::$yyRuleInfo[(2 * $yyruleno) + 1]; - - $state_for_reduce = $this->yystack[$this->yyidx - $yysize]->stateno; - - $this->yyidx -= $yysize; - $yyact = $this->yy_find_reduce_action($state_for_reduce, $yygoto); - if ($yyact < self::YYNSTATE) { - $this->yy_shift($yyact, $yygoto, $yygotominor); - } else { - if ($yyact == self::YYNSTATE + self::YYNRULE + 1) { - $this->yy_accept(); - } - } - - $this->output = $yygotominor; - } - - /* -** The following is executed when the parser accepts -*/ - - private function yy_shift( - $yyNewState, /* The new state to shift in */ - $yyMajor, /* The major token to shift in */ - $yypMinor /* Pointer ot the minor token to shift in */ - ) - { - $this->yyidx++; - if (isset($this->yystack[$this->yyidx])) { - $yytos = $this->yystack[$this->yyidx]; - } else { - $yytos = new phql_yyStackEntry; - $this->yystack[$this->yyidx] = $yytos; - } - $yytos->stateno = $yyNewState; - $yytos->major = $yyMajor; - $yytos->minor = $yypMinor; - if ($this->yyTraceFILE) { - fwrite($this->yyTraceFILE, sprintf("%sShift %d\n", $this->yyTracePrompt, $yyNewState)); - fwrite($this->yyTraceFILE, sprintf("%sStack:", $this->yyTracePrompt)); - for ($i = 1; $i <= $this->yyidx; $i++) { - $ent = $this->yystack[$i]; - fwrite($this->yyTraceFILE, sprintf(" %s", self::$yyTokenName[$ent->major])); - } - fwrite($this->yyTraceFILE, "\n"); - } - } - - /* The main parser program. -** The first argument is a pointer to a structure obtained from -** "phql_Alloc" which describes the current state of the parser. -** The second argument is the major token number. The third is -** the minor token. The fourth optional argument is whatever the -** user wants (and specified in the grammar) and is available for -** use by the action routines. -** -** Inputs: -**
    -**
  • A pointer to the parser (an opaque structure.) -**
  • The major token number. -**
  • The minor token number. -**
  • An option argument of a grammar-specified type. -**
-** -** Outputs: -** None. -*/ - - private function yy_syntax_error() - { - $near_length = $this->status->getState()->getStartLength(); - $token_name = null; - $token_found = 0; - $tokens = Tokens::$names; - $active_token = $this->status->getState()->getActiveToken(); - - if ($this->status->getState()->getStartLength()) { - if ($active_token) { - if (in_array($active_token->value, $tokens)) { - $token_name = array_search($active_token->value, $tokens); - } - } - - if (!$token_name) { - $token_name = "UNKNOWN"; - } - - if ($near_length > 0) { - if ($this->status->getToken()->value) { - $this->status->setSyntaxError(sprintf( - "Syntax error, unexpected token %s(%s), near to '%s', when parsing: %s", - $token_name, - $this->status->getToken()->value, - $this->status->getState()->getStart(), - $this->status->getState()->getRawBuffer(), - )); - } else { - $this->status->setSyntaxError(sprintf( - "Syntax error, unexpected token %s, near to '%s', when parsing: %s", - $token_name, - $this->status->getState()->getStart(), - $this->status->getState()->getRawBuffer(), - )); - } - } else { - if ($active_token !== Opcode::IGNORE) { - if ($this->status->getToken()->value) { - $this->status->setSyntaxError(sprintf( - "Syntax error, unexpected token %s(%s), at the end of query, when parsing: %s", - $token_name, - $this->status->getToken()->value, - $this->status->getState()->getRawBuffer(), - )); - } else { - $this->status->setSyntaxError(sprintf( - "Syntax error, unexpected token %s, at the end of query, when parsing: %s", - $token_name, - $this->status->getState()->getRawBuffer(), - )); - } - } else { - $this->status->setSyntaxError("Syntax error, unexpected EOF, at the end of query"); - } - } - - if (!$token_found && $token_name) { - unset($token_name); - } - } else { - $this->status->setSyntaxError("Syntax error, unexpected EOF"); - } - - $this->status->setStatus(Status::PHQL_PARSING_FAILED); - } -} - -/* The state of the parser is completely contained in an instance of -** the following structure */ - -class phql_yyStackEntry -{ - public int $major; /* The state-number */ - /** - * The user-supplied minor token value. - * This is the value of the token. - */ - public mixed $minor = null; /* The major token value. This is the code - ** number for the token at this stack level */ - public int $stateno; -} - -function phql_ret_insert_statement(&$ret, $Q, $F, $V): void -{ - $ret = [ - "type" => Opcode::INSERT->value, - "qualifiedName" => $Q, - ]; - - if ($F !== null) { - $ret["fields"] = $F; - } - - $ret["values"] = $V; -} - -function phql_ret_select_statement(&$ret, $S, $W, $O, $G, $H, $L, $F): void -{ - $ret = [ - "type" => Opcode::SELECT->value, - "select" => $S, - ]; - - if (!empty($W)) { - $ret["where"] = $W; - } - if (!empty($O)) { - $ret["orderBy"] = $O; - } - if (!empty($G)) { - $ret["groupBy"] = $G; - } - if (!empty($H)) { - $ret["having"] = $H; - } - if (!empty($L)) { - $ret["limit"] = $L; - } - if (!empty($F)) { - $ret["forUpdate"] = $F; - } -} - -function phql_ret_select_clause(&$ret, $distinct, $columns, $tables, $join_list): void -{ - $ret = []; - - if ($distinct !== null) { - $ret["distinct"] = $distinct; - } - - $ret["columns"] = $columns; - $ret["tables"] = $tables; - - if (!empty($join_list)) { - $ret["joins"] = $join_list; - } -} - -function phql_ret_expr(&$ret, $type, $left, $right): void -{ - $ret = [ - "type" => $type, - ]; - - if ($left !== null) { - $ret["left"] = $left; - } - if ($right !== null) { - $ret["right"] = $right; - } -} - -function phql_ret_literal_zval(&$ret, int $type, ?Token $T = null): array -{ - $ret = ['type' => $type]; - if ($T !== null) { - $ret['value'] = $T->value; - } - - return $ret; -} - -function phql_ret_zval_list(&$ret, $listLeft = null, $rightList = null): array -{ - $ret = []; - - if ($listLeft !== null) { - if (is_array($listLeft) && array_key_exists(0, $listLeft)) { - foreach ($listLeft as $item) { - $ret[] = $item; // copy-on-write under the hood - } - - } else { - $ret[] = $listLeft; - } - } - - if ($rightList !== null) { - $ret[] = $rightList; - } - - return $ret; -} - -function phql_ret_column_item( - array &$ret, - int $type, - $column = null, - ?Token $identifierColumn = null, - ?Token $alias = null -): array -{ - $ret = [ - 'type' => $type, - ]; - - if ($column !== null) { - $ret['column'] = $column; - } - - if ($identifierColumn !== null) { - $ret['column'] = $identifierColumn->value; - } - - if ($alias !== null) { - $ret['alias'] = $alias->value; - } - - return $ret; -} - -function phql_ret_join_item( - array &$ret, - $type, - $qualified = null, - $alias = null, - $conditions = null -): void -{ - $ret = [ - 'type' => $type, - ]; - - if ($qualified !== null) { - $ret['qualified'] = $qualified; - } - - if ($alias !== null) { - $ret['alias'] = $alias; - } - - if ($conditions !== null) { - $ret['conditions'] = $conditions; - } -} - -function phql_ret_qualified_name( - array &$ret, - ?Token $nsAlias, - ?Token $domain, - Token $name, -): void -{ - $ret = [ - 'type' => Opcode::QUALIFIED->value, - ]; - - if ($nsAlias !== null) { - $ret['ns-alias'] = $nsAlias->value; - } - - /* if (B) phql_add_assoc_stringl(..., "domain", ...) */ - if ($domain !== null) { - $ret['domain'] = $domain->value; - } - - $ret['name'] = $name->value; -} - -function phql_ret_update_statement(array &$ret, $update, $where = null, $limit = null): void -{ - $ret = []; - $ret['type'] = Opcode::UPDATE->value; - $ret['update'] = $update; - - if ($where !== null) { - $ret['where'] = $where; - } - - if ($limit !== null) { - $ret['limit'] = $limit; - } -} - -function phql_ret_update_clause(array &$ret, $tables, $joins, $values): void -{ - $ret = []; - $ret['tables'] = $tables; - - if (!empty($joins)) { - $ret['joins'] = $joins; - } - - $ret['values'] = $values; -} - -function phql_ret_update_item(array &$ret, $column, $expr): void -{ - $ret = []; - $ret['column'] = $column; - $ret['expr'] = $expr; -} - -function phql_ret_delete_statement(array &$ret, $delete, $where = null, $limit = null): void -{ - $ret = []; - $ret['type'] = Opcode::DELETE->value; - $ret['delete'] = $delete; - - if ($where !== null) { - $ret['where'] = $where; - } - - if ($limit !== null) { - $ret['limit'] = $limit; - } -} - -function phql_ret_delete_clause(array &$ret, $tables): void -{ - $ret = [ - 'tables' => $tables, - ]; -} - -function phql_ret_assoc_name(array &$ret, $qualifiedName, $alias = null, $with = null): void -{ - $ret = [ - 'qualifiedName' => $qualifiedName, - ]; - - if ($alias !== null) { - $ret['alias'] = $alias instanceof Token ? $alias->value : $alias; - } - - if ($with !== null) { - $ret['with'] = $with; - } -} - -function phql_ret_order_item(array &$ret, $column, int $sort = 0): void -{ - $ret = [ - 'column' => $column, - ]; - if ($sort !== 0) { - $ret['sort'] = $sort; - } -} - -function phql_ret_limit_clause(array &$ret, $limit, $offset = null): void -{ - $ret = [ - 'number' => $limit, - ]; - if ($offset !== null) { - $ret['offset'] = $offset; - } -} - -function phql_ret_placeholder_zval(array &$ret, int $type, ?Token $value = null): void -{ - $ret = []; - $ret['type'] = $type; - $ret['value'] = $value->value ?? null; -} - -function phql_ret_raw_qualified_name(array &$ret, Token $tokenA, ?Token $tokenB = null): void -{ - $ret = []; - $ret['type'] = Opcode::RAW_QUALIFIED->value; - - if ($tokenB !== null) { - /* Two-part qualified name: domain + name */ - $ret['domain'] = $tokenA->value; - $ret['name'] = $tokenB->value; - } else { - /* Single-part name */ - $ret['name'] = $tokenA->value; - } -} - -function phql_ret_func_call(array &$ret, $name, $arguments = null, $distinct = null): void -{ - $ret = []; - $ret['type'] = Opcode::FCALL->value; - $ret['name'] = $name instanceof Token ? $name->value : $name; - - if ($arguments !== null) { - $ret['arguments'] = $arguments; - } - - if ($distinct !== null) { - $ret['distinct'] = $distinct; - } -} - diff --git a/resources/phpunit.xml b/resources/phpunit.xml index f1739c7..62418c1 100644 --- a/resources/phpunit.xml +++ b/resources/phpunit.xml @@ -16,8 +16,5 @@ ../src - - files/parser.php - diff --git a/src/Parser.php b/src/Parser.php index 3a6a909..96582c8 100644 --- a/src/Parser.php +++ b/src/Parser.php @@ -1,278 +1,63 @@ + * + * For the full copyright and license information, please view the LICENSE.txt + * file that was distributed with this source code. + */ + declare(strict_types=1); namespace Phalcon\Phql; -use Phalcon\Phql\Parser\Status; -use Phalcon\Phql\Scanner\Opcode; -use Phalcon\Phql\Scanner\Scanner; -use Phalcon\Phql\Scanner\ScannerStatus; -use Phalcon\Phql\Scanner\State; +use Phalcon\Phql\Parser\Cursor; +use Phalcon\Phql\Parser\StatementParser; +use Phalcon\Phql\Parser\TokenStream; use Phalcon\Phql\Scanner\Token; /** - * Orchestrates the PHQL lexer and parser, equivalent to - * phql_internal_parse_phql() in base.c. + * Parses a PHQL statement into cphalcon's intermediate representation, as + * phql_internal_parse_phql() in ext/phalcon/mvc/model/query/base.c does: + * the same AST, the same error messages, the same nesting limit. + * + * Unlike cphalcon's Lang::parsePHQL(), the parser keeps no cache and adds no + * `id` key; that belongs to the caller (Phalcon\Mvc\Model\Query\Lang). */ final class Parser { private bool $enableLiterals = true; /** - * Parse a PHQL string and return the AST array. + * Returns the statement's AST, or null when the statement holds no token + * at all (empty, blank, or starting with a NUL byte) - cphalcon's Lemon + * parser returns without a result when its first token is end of input. * - * @return array - * @throws Exception on syntax or scanner error + * @return array|null + * + * @throws Exception on a scanning or syntax error, a disabled literal, or + * a statement nested too deeply */ - public function parse(string $phql): array + public function parse(string $phql): ?array { - if ($phql === '') { - throw new Exception('PHQL statement cannot be NULL'); - } - - $state = new State($phql); - $scanner = new Scanner($state); - $token = $scanner->getToken(); - $status = new Status($state); - $parserObject = new \phql_Parser($status); - - $status->setToken($token); - $status->setEnableLiterals($this->enableLiterals); - - $errorMessage = null; - $parseFailed = false; - - while (($scannerStatus = $scanner->scanForToken()) === ScannerStatus::OK) { - $state->setStartLength(mb_strlen($phql) - $state->getCursor()); - $state->setActiveToken($scanner->getToken()->opcode); - - match ($scanner->getToken()->opcode) { - Opcode::IGNORE => null, - - Opcode::ADD => $parserObject->phql_(\phql_Parser::PHQL_PLUS), - Opcode::SUB => $parserObject->phql_(\phql_Parser::PHQL_MINUS), - Opcode::MUL => $parserObject->phql_(\phql_Parser::PHQL_TIMES), - Opcode::DIV => $parserObject->phql_(\phql_Parser::PHQL_DIVIDE), - Opcode::MOD => $parserObject->phql_(\phql_Parser::PHQL_MOD), - Opcode::AND => $parserObject->phql_(\phql_Parser::PHQL_AND), - Opcode::OR => $parserObject->phql_(\phql_Parser::PHQL_OR), - Opcode::EQUALS => $parserObject->phql_(\phql_Parser::PHQL_EQUALS), - Opcode::NOTEQUALS => $parserObject->phql_(\phql_Parser::PHQL_NOTEQUALS), - Opcode::LESS => $parserObject->phql_(\phql_Parser::PHQL_LESS), - Opcode::GREATER => $parserObject->phql_(\phql_Parser::PHQL_GREATER), - Opcode::GREATEREQUAL => $parserObject->phql_(\phql_Parser::PHQL_GREATEREQUAL), - Opcode::LESSEQUAL => $parserObject->phql_(\phql_Parser::PHQL_LESSEQUAL), - Opcode::DOT => $parserObject->phql_(\phql_Parser::PHQL_DOT), - Opcode::COMMA => $parserObject->phql_(\phql_Parser::PHQL_COMMA), - Opcode::PARENTHESES_OPEN => $parserObject->phql_(\phql_Parser::PHQL_PARENTHESES_OPEN), - Opcode::PARENTHESES_CLOSE => $parserObject->phql_(\phql_Parser::PHQL_PARENTHESES_CLOSE), - Opcode::LIKE => $parserObject->phql_(\phql_Parser::PHQL_LIKE), - Opcode::ILIKE => $parserObject->phql_(\phql_Parser::PHQL_ILIKE), - Opcode::NOT => $parserObject->phql_(\phql_Parser::PHQL_NOT), - Opcode::BITWISE_AND => $parserObject->phql_(\phql_Parser::PHQL_BITWISE_AND), - Opcode::BITWISE_OR => $parserObject->phql_(\phql_Parser::PHQL_BITWISE_OR), - Opcode::BITWISE_NOT => $parserObject->phql_(\phql_Parser::PHQL_BITWISE_NOT), - Opcode::BITWISE_XOR => $parserObject->phql_(\phql_Parser::PHQL_BITWISE_XOR), - Opcode::OP_MATCHES => $parserObject->phql_(\phql_Parser::PHQL_OP_MATCHES), - Opcode::OP_CONTAINS => $parserObject->phql_(\phql_Parser::PHQL_OP_CONTAINS), - Opcode::OP_CONTAINED => $parserObject->phql_(\phql_Parser::PHQL_OP_CONTAINED), - Opcode::OP_OVERLAPS => $parserObject->phql_(\phql_Parser::PHQL_OP_OVERLAPS), - Opcode::OP_CONCAT => $parserObject->phql_(\phql_Parser::PHQL_OP_CONCAT), - Opcode::OP_JSON_GET => $parserObject->phql_(\phql_Parser::PHQL_OP_JSON_GET), - Opcode::OP_JSON_GET_TEXT => $parserObject->phql_(\phql_Parser::PHQL_OP_JSON_GET_TEXT), - Opcode::OP_JSON_PATH => $parserObject->phql_(\phql_Parser::PHQL_OP_JSON_PATH), - Opcode::OP_JSON_PATH_TEXT => $parserObject->phql_(\phql_Parser::PHQL_OP_JSON_PATH_TEXT), - Opcode::AGAINST => $parserObject->phql_(\phql_Parser::PHQL_AGAINST), - Opcode::CASE => $parserObject->phql_(\phql_Parser::PHQL_CASE), - Opcode::WHEN => $parserObject->phql_(\phql_Parser::PHQL_WHEN), - Opcode::THEN => $parserObject->phql_(\phql_Parser::PHQL_THEN), - Opcode::END => $parserObject->phql_(\phql_Parser::PHQL_END), - Opcode::ELSE => $parserObject->phql_(\phql_Parser::PHQL_ELSE), - Opcode::FOR => $parserObject->phql_(\phql_Parser::PHQL_FOR), - Opcode::WITH => $parserObject->phql_(\phql_Parser::PHQL_WITH), - Opcode::FROM => $parserObject->phql_(\phql_Parser::PHQL_FROM), - Opcode::UPDATE => $parserObject->phql_(\phql_Parser::PHQL_UPDATE), - Opcode::SET => $parserObject->phql_(\phql_Parser::PHQL_SET), - Opcode::WHERE => $parserObject->phql_(\phql_Parser::PHQL_WHERE), - Opcode::DELETE => $parserObject->phql_(\phql_Parser::PHQL_DELETE), - Opcode::INSERT => $parserObject->phql_(\phql_Parser::PHQL_INSERT), - Opcode::INTO => $parserObject->phql_(\phql_Parser::PHQL_INTO), - Opcode::VALUES => $parserObject->phql_(\phql_Parser::PHQL_VALUES), - Opcode::SELECT => $parserObject->phql_(\phql_Parser::PHQL_SELECT), - Opcode::AS => $parserObject->phql_(\phql_Parser::PHQL_AS), - Opcode::ORDER => $parserObject->phql_(\phql_Parser::PHQL_ORDER), - Opcode::BY => $parserObject->phql_(\phql_Parser::PHQL_BY), - Opcode::LIMIT => $parserObject->phql_(\phql_Parser::PHQL_LIMIT), - Opcode::OFFSET => $parserObject->phql_(\phql_Parser::PHQL_OFFSET), - Opcode::GROUP => $parserObject->phql_(\phql_Parser::PHQL_GROUP), - Opcode::HAVING => $parserObject->phql_(\phql_Parser::PHQL_HAVING), - Opcode::ASC => $parserObject->phql_(\phql_Parser::PHQL_ASC), - Opcode::DESC => $parserObject->phql_(\phql_Parser::PHQL_DESC), - Opcode::IN => $parserObject->phql_(\phql_Parser::PHQL_IN), - Opcode::ON => $parserObject->phql_(\phql_Parser::PHQL_ON), - Opcode::INNER => $parserObject->phql_(\phql_Parser::PHQL_INNER), - Opcode::JOIN => $parserObject->phql_(\phql_Parser::PHQL_JOIN), - Opcode::LEFT => $parserObject->phql_(\phql_Parser::PHQL_LEFT), - Opcode::RIGHT => $parserObject->phql_(\phql_Parser::PHQL_RIGHT), - Opcode::CROSS => $parserObject->phql_(\phql_Parser::PHQL_CROSS), - Opcode::FULL => $parserObject->phql_(\phql_Parser::PHQL_FULL), - Opcode::OUTER => $parserObject->phql_(\phql_Parser::PHQL_OUTER), - Opcode::IS => $parserObject->phql_(\phql_Parser::PHQL_IS), - Opcode::NULL => $parserObject->phql_(\phql_Parser::PHQL_NULL), - Opcode::BETWEEN => $parserObject->phql_(\phql_Parser::PHQL_BETWEEN), - Opcode::BETWEEN_NOT => $parserObject->phql_(\phql_Parser::PHQL_BETWEEN_NOT), - Opcode::DISTINCT => $parserObject->phql_(\phql_Parser::PHQL_DISTINCT), - Opcode::ALL => $parserObject->phql_(\phql_Parser::PHQL_ALL), - Opcode::CAST => $parserObject->phql_(\phql_Parser::PHQL_CAST), - Opcode::CONVERT => $parserObject->phql_(\phql_Parser::PHQL_CONVERT), - Opcode::USING => $parserObject->phql_(\phql_Parser::PHQL_USING), - Opcode::EXISTS => $parserObject->phql_(\phql_Parser::PHQL_EXISTS), - - Opcode::IDENTIFIER => $parserObject->phql_( - \phql_Parser::PHQL_IDENTIFIER, - $this->makeParserToken($scanner->getToken()) - ), - Opcode::NPLACEHOLDER => $parserObject->phql_( - \phql_Parser::PHQL_NPLACEHOLDER, - $this->makeParserToken($scanner->getToken()) - ), - Opcode::SPLACEHOLDER => $parserObject->phql_( - \phql_Parser::PHQL_SPLACEHOLDER, - $this->makeParserToken($scanner->getToken()) - ), - Opcode::BPLACEHOLDER => $parserObject->phql_( - \phql_Parser::PHQL_BPLACEHOLDER, - $this->makeParserToken($scanner->getToken()) - ), - - Opcode::INTEGER => $this->enableLiterals - ? $parserObject->phql_(\phql_Parser::PHQL_INTEGER, $this->makeParserToken($scanner->getToken())) - : $this->handleLiteralsDisabled($status), - Opcode::DOUBLE => $this->enableLiterals - ? $parserObject->phql_(\phql_Parser::PHQL_DOUBLE, $this->makeParserToken($scanner->getToken())) - : $this->handleLiteralsDisabled($status), - Opcode::STRING => $this->enableLiterals - ? $parserObject->phql_(\phql_Parser::PHQL_STRING, $this->makeParserToken($scanner->getToken())) - : $this->handleLiteralsDisabled($status), - Opcode::HINTEGER => $this->enableLiterals - ? $parserObject->phql_(\phql_Parser::PHQL_HINTEGER, $this->makeParserToken($scanner->getToken())) - : $this->handleLiteralsDisabled($status), - Opcode::TRUE => $this->enableLiterals - ? $parserObject->phql_(\phql_Parser::PHQL_TRUE) - : $this->handleLiteralsDisabled($status), - Opcode::FALSE => $this->enableLiterals - ? $parserObject->phql_(\phql_Parser::PHQL_FALSE) - : $this->handleLiteralsDisabled($status), - - default => $this->handleUnknownOpcode($scanner->getToken()->opcode, $status), - }; - - if ($status->getStatus() !== Status::PHQL_PARSING_OK) { - $parseFailed = true; - break; - } - } - - if (!$parseFailed) { - if ( - $scannerStatus === ScannerStatus::ERR - || $scannerStatus === ScannerStatus::IMPOSSIBLE - ) { - $errorMessage = $this->buildScannerErrorMessage($status, $phql); - $parseFailed = true; - } else { - $parserObject->phql_(0); - } - } - - $state->setActiveToken(null); - - if ($status->getStatus() !== Status::PHQL_PARSING_OK) { - $parseFailed = true; - if ($status->getSyntaxError() !== null && $errorMessage === null) { - $errorMessage = $status->getSyntaxError(); - } - } - - if ($parseFailed) { - throw new Exception($errorMessage ?? 'Unknown PHQL parsing error'); - } - - /** @var array|null $ast */ - $ast = $status->getAst(); - if (!is_array($ast)) { - throw new Exception('PHQL parsing produced no result'); // @codeCoverageIgnore + $cursor = new Cursor(new TokenStream($phql, $this->enableLiterals)); + if ($cursor->is(Token::EOF)) { + return null; } - return $ast; + return (new StatementParser($cursor))->parseProgram(); } + /** + * Whether literals (numbers, strings, TRUE/FALSE) may appear in the + * statement; cphalcon's `phalcon.orm.enable_literals`. + */ public function setEnableLiterals(bool $enable): static { $this->enableLiterals = $enable; return $this; } - - /** - * Mirrors phql_scanner_error_msg() in base.c. - */ - private function buildScannerErrorMessage(Status $status, string $phql): string - { - $state = $status->getState(); - $phqlLength = mb_strlen($phql); - - if ($state->getStart() !== null && $state->getStartLength() > 0) { - $startStr = substr($phql, $state->getCursor()); - if ($state->getStartLength() > 16) { - $errorPart = substr($startStr, 0, 16); - - return sprintf( - "Scanning error before '%s...' when parsing: %s (%d)", - $errorPart, - $phql, - $phqlLength - ); - } - - return sprintf( - "Scanning error before '%s' when parsing: %s (%d)", - $startStr, - $phql, - $phqlLength - ); - } - - return 'Scanning error near to EOF'; // @codeCoverageIgnore - } - - private function handleLiteralsDisabled(Status $status): void - { - $status->setSyntaxError('Literals are disabled in PHQL statements'); - $status->setStatus(Status::PHQL_PARSING_FAILED); - } - - private function handleUnknownOpcode(?Opcode $opcode, Status $status): void - { - $status->setStatus(Status::PHQL_PARSING_FAILED); - - throw new Exception( - sprintf('Scanner: Unknown opcode %d', $opcode->value ?? 0) - ); - } - - /** - * Snapshot the current scanner token into a new Token instance so the - * parser stack holds stable values (the scanner reuses its token object). - * Mirrors phql_parse_with_token() in base.c. - */ - private function makeParserToken(Token $token): Token - { - return new Token( - $token->opcode, - $token->value, - $token->length, - ); - } } diff --git a/src/Parser/Ast.php b/src/Parser/Ast.php new file mode 100644 index 0000000..6a5dd7b --- /dev/null +++ b/src/Parser/Ast.php @@ -0,0 +1,417 @@ + + * + * For the full copyright and license information, please view the LICENSE.txt + * file that was distributed with this source code. + */ + +declare(strict_types=1); + +namespace Phalcon\Phql\Parser; + +use Phalcon\Phql\Scanner\Opcode; + +use function count; + +/** + * Builds the AST nodes, one method per phql_ret_* helper of cphalcon's + * ext/phalcon/mvc/model/query/parser.php.inc.h. Keys appear in the order the + * C helpers add them, optional keys are left out (never null), types are the + * Opcode values and every token value stays a string. + * + * @phpstan-type Node array + */ +final class Ast +{ + /** + * phql_ret_assoc_name() + * + * @param array $qualifiedName + * @param array|null $with + * + * @return array + */ + public static function assocName(array $qualifiedName, ?string $alias, ?array $with): array + { + $node = ['qualifiedName' => $qualifiedName]; + if ($alias !== null) { + $node['alias'] = $alias; + } + + if ($with !== null) { + $node['with'] = $with; + } + + return $node; + } + + /** + * cphalcon's phql_ret_zval_list() leaves a list of one item bare for the + * rules that pass their single item up unwrapped (tables, joins, `with` + * models, ORDER BY / GROUP BY items, UPDATE assignments) and wraps it + * once a second item follows. + * + * @param list> $items at least one + * + * @return array + */ + public static function bareIfSingle(array $items): array + { + return count($items) === 1 ? $items[0] : $items; + } + + /** + * phql_ret_column_item(): `column` is an expression, or the domain name + * of `domain.*` (STARALL has neither). + * + * @param array|string|null $column + * + * @return array + */ + public static function columnItem(int $type, array | string | null $column, ?string $alias): array + { + $node = ['type' => $type]; + if ($column !== null) { + $node['column'] = $column; + } + + if ($alias !== null) { + $node['alias'] = $alias; + } + + return $node; + } + + /** + * phql_ret_delete_clause() + * + * @param array $tables + * + * @return array + */ + public static function deleteClause(array $tables): array + { + return ['tables' => $tables]; + } + + /** + * phql_ret_delete_statement() + * + * @param array $delete + * @param array|null $where + * @param array|null $limit + * + * @return array + */ + public static function deleteStatement(array $delete, ?array $where, ?array $limit): array + { + $node = ['type' => Opcode::DELETE->value, 'delete' => $delete]; + if ($where !== null) { + $node['where'] = $where; + } + + if ($limit !== null) { + $node['limit'] = $limit; + } + + return $node; + } + + /** + * phql_ret_expr() + * + * @param array|null $left + * @param array|null $right + * + * @return array + */ + public static function expr(int $type, ?array $left, ?array $right): array + { + $node = ['type' => $type]; + if ($left !== null) { + $node['left'] = $left; + } + + if ($right !== null) { + $node['right'] = $right; + } + + return $node; + } + + /** + * phql_ret_func_call() + * + * @param array|null $arguments + * + * @return array + */ + public static function funcCall(string $name, ?array $arguments, bool $distinct): array + { + $node = ['type' => Opcode::FCALL->value, 'name' => $name]; + if ($arguments !== null) { + $node['arguments'] = $arguments; + } + + if ($distinct) { + $node['distinct'] = true; + } + + return $node; + } + + /** + * phql_ret_insert_statement() + * + * @param array $qualifiedName + * @param array|null $fields + * @param array $values + * + * @return array + */ + public static function insertStatement(array $qualifiedName, ?array $fields, array $values): array + { + $node = ['type' => Opcode::INSERT->value, 'qualifiedName' => $qualifiedName]; + if ($fields !== null) { + $node['fields'] = $fields; + } + + $node['values'] = $values; + + return $node; + } + + /** + * phql_ret_join_item(): the alias is a qualified-name node. + * + * @param array $qualified + * @param array|null $alias + * @param array|null $conditions + * + * @return array + */ + public static function joinItem(int $type, array $qualified, ?array $alias, ?array $conditions): array + { + $node = ['type' => $type, 'qualified' => $qualified]; + if ($alias !== null) { + $node['alias'] = $alias; + } + + if ($conditions !== null) { + $node['conditions'] = $conditions; + } + + return $node; + } + + /** + * phql_ret_limit_clause() + * + * @param array $number + * @param array|null $offset + * + * @return array + */ + public static function limitClause(array $number, ?array $offset): array + { + $node = ['number' => $number]; + if ($offset !== null) { + $node['offset'] = $offset; + } + + return $node; + } + + /** + * phql_ret_literal_zval(): NULL, TRUE and FALSE have no value. + * + * @return array + */ + public static function literal(int $type, ?string $value): array + { + return $value === null ? ['type' => $type] : ['type' => $type, 'value' => $value]; + } + + /** + * phql_ret_order_item(): a sort of 0 (no ASC/DESC) is left out. + * + * @param array $column + * + * @return array + */ + public static function orderItem(array $column, int $sort): array + { + return $sort === 0 ? ['column' => $column] : ['column' => $column, 'sort' => $sort]; + } + + /** + * phql_ret_placeholder_zval() + * + * @return array + */ + public static function placeholder(int $type, string $value): array + { + return ['type' => $type, 'value' => $value]; + } + + /** + * phql_ret_qualified_name(); its `ns-alias` key is never produced by the + * grammar. + * + * @return array + */ + public static function qualifiedName(?string $domain, string $name): array + { + if ($domain === null) { + return ['type' => Opcode::QUALIFIED->value, 'name' => $name]; + } + + return ['type' => Opcode::QUALIFIED->value, 'domain' => $domain, 'name' => $name]; + } + + /** + * phql_ret_raw_qualified_name() as CAST and CONVERT use it: a type name. + * + * @return array + */ + public static function rawQualifiedName(string $name): array + { + return ['type' => Opcode::RAW_QUALIFIED->value, 'name' => $name]; + } + + /** + * phql_ret_select_clause(): `distinct` is 1 for DISTINCT and 0 for ALL. + * + * @param array $columns + * @param array $tables + * @param array|null $joins + * + * @return array + */ + public static function selectClause(?int $distinct, array $columns, array $tables, ?array $joins): array + { + $node = []; + if ($distinct !== null) { + $node['distinct'] = $distinct; + } + + $node['columns'] = $columns; + $node['tables'] = $tables; + if ($joins !== null) { + $node['joins'] = $joins; + } + + return $node; + } + + /** + * phql_ret_select_statement(): ORDER BY comes before GROUP BY in the node + * although GROUP BY comes first in the statement. + * + * @param array $select + * @param array|null $where + * @param array|null $orderBy + * @param array|null $groupBy + * @param array|null $having + * @param array|null $limit + * + * @return array + */ + public static function selectStatement( + array $select, + ?array $where, + ?array $orderBy, + ?array $groupBy, + ?array $having, + ?array $limit, + ?bool $forUpdate + ): array { + $node = ['type' => Opcode::SELECT->value, 'select' => $select]; + if ($where !== null) { + $node['where'] = $where; + } + + if ($orderBy !== null) { + $node['orderBy'] = $orderBy; + } + + if ($groupBy !== null) { + $node['groupBy'] = $groupBy; + } + + if ($having !== null) { + $node['having'] = $having; + } + + if ($limit !== null) { + $node['limit'] = $limit; + } + + if ($forUpdate !== null) { + $node['forUpdate'] = $forUpdate; + } + + return $node; + } + + /** + * phql_ret_update_clause() + * + * @param array $tables + * @param array|null $joins + * @param array $values + * + * @return array + */ + public static function updateClause(array $tables, ?array $joins, array $values): array + { + $node = ['tables' => $tables]; + if ($joins !== null) { + $node['joins'] = $joins; + } + + $node['values'] = $values; + + return $node; + } + + /** + * phql_ret_update_item() + * + * @param array $column + * @param array $expr + * + * @return array + */ + public static function updateItem(array $column, array $expr): array + { + return ['column' => $column, 'expr' => $expr]; + } + + /** + * phql_ret_update_statement() + * + * @param array $update + * @param array|null $where + * @param array|null $limit + * + * @return array + */ + public static function updateStatement(array $update, ?array $where, ?array $limit): array + { + $node = ['type' => Opcode::UPDATE->value, 'update' => $update]; + if ($where !== null) { + $node['where'] = $where; + } + + if ($limit !== null) { + $node['limit'] = $limit; + } + + return $node; + } +} diff --git a/src/Parser/Cursor.php b/src/Parser/Cursor.php new file mode 100644 index 0000000..be59b3d --- /dev/null +++ b/src/Parser/Cursor.php @@ -0,0 +1,130 @@ + + * + * For the full copyright and license information, please view the LICENSE.txt + * file that was distributed with this source code. + */ + +declare(strict_types=1); + +namespace Phalcon\Phql\Parser; + +use Phalcon\Phql\Exception; +use Phalcon\Phql\Scanner\Token; + +/** + * One token of lookahead, plus a count of the entries cphalcon's Lemon parser + * would hold on its stack at this point of the parse. + * + * cphalcon's parser (the generated parser.c) has a stack of 100 entries, the + * first being a sentinel, and fails with "nested too deeply" when a push + * finds it full. Every shifted token pushes one entry; every reduction pops + * its right-hand side and pushes the left-hand side back (pp_reduce calls + * pp_shift for the goto), so a reduction of n > 0 symbols frees n - 1 + * entries and can never overflow, while an empty rule pushes one entry and + * can. The parsers call shift() for every token Lemon would shift and + * reduce() for every rule application whose right-hand side is not exactly + * one symbol (those leave the count unchanged), in the order Lemon applies + * them. The count then equals Lemon's stack depth and overflows on the same + * token. + */ +final class Cursor +{ + /** + * Entries above the sentinel that fit on Lemon's 100-entry stack. + */ + public const MAX_DEPTH = 99; + + private Token $current; + + private int $depth = 0; + + public function __construct(private readonly TokenStream $stream) + { + $this->current = $stream->next(); + } + + public function current(): Token + { + return $this->current; + } + + /** + * Shifts the current token if it has the given opcode. + * + * @throws Exception syntax error on any other token + * + * @phpstan-impure + */ + public function expect(int $opcode): Token + { + if ($this->current->opcode !== $opcode) { + throw $this->stream->syntaxError($this->current); + } + + return $this->shift(); + } + + public function is(int $opcode): bool + { + return $this->current->opcode === $opcode; + } + + /** + * Applies a grammar rule with a right-hand side of $length symbols. + * + * @throws Exception when an empty rule overflows the stack + * + * @phpstan-impure + */ + public function reduce(int $length): void + { + if ($length === 0) { + $this->push(); + + return; + } + + $this->depth -= $length - 1; + } + + /** + * Pushes the current token and scans the next one right away: Lemon acts + * on a token only once the following token has been scanned, so a + * scanning error after the token is reported before anything else. + * + * @return Token the shifted token + * + * @throws Exception when the stack overflows, or on the next token's + * scanning, literal or opcode error + * + * @phpstan-impure + */ + public function shift(): Token + { + $this->push(); + + $shifted = $this->current; + $this->current = $this->stream->next(); + + return $shifted; + } + + public function syntaxError(): Exception + { + return $this->stream->syntaxError($this->current); + } + + private function push(): void + { + if ($this->depth >= self::MAX_DEPTH) { + throw $this->stream->stackOverflow(); + } + + $this->depth++; + } +} diff --git a/src/Parser/ExpressionParser.php b/src/Parser/ExpressionParser.php new file mode 100644 index 0000000..700ab56 --- /dev/null +++ b/src/Parser/ExpressionParser.php @@ -0,0 +1,610 @@ + + * + * For the full copyright and license information, please view the LICENSE.txt + * file that was distributed with this source code. + */ + +declare(strict_types=1); + +namespace Phalcon\Phql\Parser; + +use Phalcon\Phql\Exception; +use Phalcon\Phql\Scanner\Opcode; +use Phalcon\Phql\Scanner\Token; + +use function count; + +/** + * Parses `expr` of cphalcon's parser.php.lemon by precedence climbing over + * the grammar's own precedence declarations (lines 17-29), lowest first: + * + * 1 %right AGAINST + * 2 %left BETWEEN BETWEEN_NOT + * 3 %left EQUALS NOTEQUALS LESS GREATER GREATEREQUAL LESSEQUAL + * OP_MATCHES OP_CONTAINS OP_CONTAINED OP_OVERLAPS + * 4 %left AND OR + * 5 %left LIKE ILIKE + * 6 %left BITWISE_AND BITWISE_OR BITWISE_XOR + * 7 %left DIVIDE TIMES MOD + * 8 %left PLUS MINUS OP_CONCAT + * 9 %left IS + * 10 %right IN + * 11 %right NOT BITWISE_NOT + * 12 %left OP_JSON_GET OP_JSON_GET_TEXT OP_JSON_PATH OP_JSON_PATH_TEXT + * + * Lemon gives a rule the level of its leftmost terminal that has one, so + * `expr NOT LIKE expr`, `NOT ILIKE` and `NOT IN` take NOT's level, unary + * minus takes MINUS's, and rules whose terminals have no level (CASE ... THEN + * expr, ELSE expr) never end an operand early. On an operator after an + * operand Lemon shifts when the operator's level is higher than the pending + * rule's, or equal and right-associative, and reduces otherwise - see + * shifts(). This yields cphalcon's trees, including the surprising ones: + * `a = 1 AND b` is `a = (1 AND b)` and `a + b * c` is `(a + b) * c`. + * + * Left-associative chains are loops and right-hand operands are recursion, + * so recursion depth follows Lemon's stack depth, which Cursor bounds. + * + * Subqueries are parsed by a StatementParser of their own rather than by the + * one that owns this parser: a reference back to it would make every parse + * a reference cycle, left for PHP's cycle collector instead of freed. + */ +final class ExpressionParser +{ + public function __construct(private readonly Cursor $cursor) + { + } + + /** + * Precedence level of a token that can follow an operand, or null when + * the token ends the expression. + */ + private static function level(int $opcode): ?int + { + return match ($opcode) { + Opcode::AGAINST->value => 1, + Opcode::BETWEEN->value, + Opcode::BETWEEN_NOT->value => 2, + Opcode::EQUALS->value, + Opcode::NOTEQUALS->value, + Opcode::LESS->value, + Opcode::GREATER->value, + Opcode::GREATEREQUAL->value, + Opcode::LESSEQUAL->value, + Opcode::OP_MATCHES->value, + Opcode::OP_CONTAINS->value, + Opcode::OP_CONTAINED->value, + Opcode::OP_OVERLAPS->value => 3, + Opcode::AND->value, + Opcode::OR->value => 4, + Opcode::LIKE->value, + Opcode::ILIKE->value => 5, + Opcode::BITWISE_AND->value, + Opcode::BITWISE_OR->value, + Opcode::BITWISE_XOR->value => 6, + Opcode::DIV->value, + Opcode::MUL->value, + Opcode::MOD->value => 7, + Opcode::ADD->value, + Opcode::SUB->value, + Opcode::OP_CONCAT->value => 8, + Opcode::IS->value => 9, + Opcode::IN->value => 10, + Opcode::NOT->value => 11, + Opcode::OP_JSON_GET->value, + Opcode::OP_JSON_GET_TEXT->value, + Opcode::OP_JSON_PATH->value, + Opcode::OP_JSON_PATH_TEXT->value => 12, + default => null, + }; + } + + /** + * Lemon's shift/reduce decision for an operator of level $level after a + * finished operand of a rule of level $pending: AGAINST (1), IN (10) + * and NOT / BITWISE_NOT (11) are the right-associative levels. + */ + private static function shifts(int $level, ?int $pending): bool + { + return $pending === null + || $level > $pending + || ($level === $pending && ($level === 1 || $level === 10 || $level === 11)); + } + + /** + * expr, as the operand of a rule of precedence level $pending (null when + * no operator rule is waiting for it). + * + * @return array + * + * @throws Exception + */ + public function parse(?int $pending = null): array + { + return $this->continue($this->parsePrefix(), $pending); + } + + /** + * argument_list ::= argument_list COMMA argument_item | argument_item + * argument_item ::= TIMES | expr + * + * Always a list, even of one item. + * + * @return list> + * + * @throws Exception + */ + public function parseArgumentList(): array + { + $arguments = [$this->parseArgumentItem()]; + + while ($this->cursor->is(Opcode::COMMA->value)) { + $this->cursor->shift(); + $arguments[] = $this->parseArgumentItem(); + $this->cursor->reduce(3); + } + + return $arguments; + } + + /** + * The start of a column_item: either the whole of + * column_item ::= IDENTIFIER DOT TIMES + * returned as its finished DOMAINALL column item, or an expression. + * + * @return array + * + * @throws Exception + */ + public function parseColumn(): array + { + if (!$this->cursor->is(Opcode::IDENTIFIER->value)) { + return $this->parse(); + } + + $name = $this->cursor->shift(); + if (!$this->cursor->is(Opcode::DOT->value)) { + return $this->continue($this->identifierTail($name), null); + } + + $this->cursor->shift(); + if ($this->cursor->is(Opcode::MUL->value)) { + $this->cursor->shift(); + $this->cursor->reduce(3); + + return Ast::columnItem(Opcode::DOMAINALL->value, (string) $name->value, null); + } + + return $this->continue($this->qualifiedTail($name), null); + } + + /** + * Applies the operators that bind the operand $left before the pending + * rule completes. + * + * @param array $left + * + * @return array + * + * @throws Exception + */ + private function continue(array $left, ?int $pending): array + { + while (true) { + $opcode = $this->cursor->current()->opcode; + $level = self::level($opcode); + if ($level === null || !self::shifts($level, $pending)) { + return $left; + } + + $left = match ($opcode) { + Opcode::IS->value => $this->parseIs($left), + Opcode::IN->value => $this->parseIn($left, Opcode::IN->value, 5), + Opcode::NOT->value => $this->parseNotInfix($left), + default => $this->parseBinary($left, $opcode, $level), + }; + } + } + + /** + * function_call ::= IDENTIFIER PARENTHESES_OPEN distinct_or_null argument_list_or_null PARENTHESES_CLOSE + * distinct_or_null ::= DISTINCT | . + * argument_list_or_null ::= argument_list | . + * + * @return array + * + * @throws Exception + */ + private function functionCall(Token $name): array + { + $this->cursor->shift(); + + $distinct = $this->cursor->is(Opcode::DISTINCT->value); + if ($distinct) { + $this->cursor->shift(); + } else { + $this->cursor->reduce(0); + } + + $arguments = null; + if ($this->cursor->is(Opcode::PARENTHESES_CLOSE->value)) { + $this->cursor->reduce(0); + } else { + $arguments = $this->parseArgumentList(); + } + + $this->cursor->expect(Opcode::PARENTHESES_CLOSE->value); + $this->cursor->reduce(5); + + return Ast::funcCall((string) $name->value, $arguments, $distinct); + } + + /** + * After an IDENTIFIER (already shifted) in an expression: + * function_call ::= IDENTIFIER PARENTHESES_OPEN ... + * qualified_name ::= IDENTIFIER DOT IDENTIFIER | IDENTIFIER + * + * @return array + * + * @throws Exception + */ + private function identifierTail(Token $name): array + { + if ($this->cursor->is(Opcode::PARENTHESES_OPEN->value)) { + return $this->functionCall($name); + } + + if (!$this->cursor->is(Opcode::DOT->value)) { + return Ast::qualifiedName(null, (string) $name->value); + } + + $this->cursor->shift(); + + return $this->qualifiedTail($name); + } + + /** + * argument_item ::= TIMES | expr + * + * @return array + * + * @throws Exception + */ + private function parseArgumentItem(): array + { + if (!$this->cursor->is(Opcode::MUL->value)) { + return $this->parse(); + } + + $this->cursor->shift(); + + return Ast::columnItem(Opcode::STARALL->value, null, null); + } + + /** + * expr ::= expr OP expr, for every binary operator; the node type is the + * operator's token code. + * + * @param array $left + * + * @return array + * + * @throws Exception + */ + private function parseBinary(array $left, int $opcode, int $level): array + { + $this->cursor->shift(); + $right = $this->parse($level); + $this->cursor->reduce(3); + + return Ast::expr($opcode, $left, $right); + } + + /** + * expr ::= CASE expr when_clauses END + * when_clauses ::= when_clauses when_clause | when_clause + * when_clause ::= WHEN expr THEN expr | ELSE expr + * + * @return array + * + * @throws Exception + */ + private function parseCase(): array + { + $this->cursor->shift(); + $subject = $this->parse(); + $clauses = []; + + do { + if ($this->cursor->is(Opcode::WHEN->value)) { + $this->cursor->shift(); + $condition = $this->parse(); + $this->cursor->expect(Opcode::THEN->value); + $result = $this->parse(); + $this->cursor->reduce(4); + $clauses[] = Ast::expr(Opcode::WHEN->value, $condition, $result); + } elseif ($this->cursor->is(Opcode::ELSE->value)) { + $this->cursor->shift(); + $result = $this->parse(); + $this->cursor->reduce(2); + $clauses[] = Ast::expr(Opcode::ELSE->value, $result, null); + } else { + throw $this->cursor->syntaxError(); + } + + if (count($clauses) > 1) { + $this->cursor->reduce(2); + } + } while ($this->cursor->is(Opcode::WHEN->value) || $this->cursor->is(Opcode::ELSE->value)); + + $this->cursor->expect(Opcode::END->value); + $this->cursor->reduce(4); + + return Ast::expr(Opcode::CASE->value, $subject, $clauses); + } + + /** + * expr ::= CAST PARENTHESES_OPEN expr AS IDENTIFIER PARENTHESES_CLOSE + * expr ::= CONVERT PARENTHESES_OPEN expr USING IDENTIFIER PARENTHESES_CLOSE + * + * @return array + * + * @throws Exception + */ + private function parseConversion(int $type, int $keyword): array + { + $this->cursor->shift(); + $this->cursor->expect(Opcode::PARENTHESES_OPEN->value); + $value = $this->parse(); + $this->cursor->expect($keyword); + $target = $this->cursor->expect(Opcode::IDENTIFIER->value); + $this->cursor->expect(Opcode::PARENTHESES_CLOSE->value); + $this->cursor->reduce(6); + + return Ast::expr($type, $value, Ast::rawQualifiedName((string) $target->value)); + } + + /** + * expr ::= EXISTS PARENTHESES_OPEN select_statement PARENTHESES_CLOSE + * + * @return array + * + * @throws Exception + */ + private function parseExists(): array + { + $this->cursor->shift(); + $this->cursor->expect(Opcode::PARENTHESES_OPEN->value); + $select = $this->parseSubquery(); + $this->cursor->expect(Opcode::PARENTHESES_CLOSE->value); + $this->cursor->reduce(4); + + return Ast::expr(Opcode::EXISTS->value, null, $select); + } + + /** + * expr ::= expr IN PARENTHESES_OPEN argument_list PARENTHESES_CLOSE + * expr ::= expr IN PARENTHESES_OPEN select_statement PARENTHESES_CLOSE + * and the NOT IN forms (one symbol longer), with IN / NOT IN shifted + * up to the IN. + * + * @param array $left + * + * @return array + * + * @throws Exception + */ + private function parseIn(array $left, int $type, int $length): array + { + $this->cursor->shift(); + $this->cursor->expect(Opcode::PARENTHESES_OPEN->value); + + $right = $this->cursor->is(Opcode::SELECT->value) + ? $this->parseSubquery() + : $this->parseArgumentList(); + + $this->cursor->expect(Opcode::PARENTHESES_CLOSE->value); + $this->cursor->reduce($length); + + return Ast::expr($type, $left, $right); + } + + /** + * expr ::= expr IS NULL | expr IS NOT NULL + * + * @param array $left + * + * @return array + * + * @throws Exception + */ + private function parseIs(array $left): array + { + $this->cursor->shift(); + + if ($this->cursor->is(Opcode::NULL->value)) { + $this->cursor->shift(); + $this->cursor->reduce(3); + + return Ast::expr(Opcode::ISNULL->value, $left, null); + } + + $this->cursor->expect(Opcode::NOT->value); + $this->cursor->expect(Opcode::NULL->value); + $this->cursor->reduce(4); + + return Ast::expr(Opcode::ISNOTNULL->value, $left, null); + } + + /** + * expr ::= expr NOT LIKE expr | expr NOT ILIKE expr | expr NOT IN (...) + * + * NOT is shifted on NOT's level before the parser knows which follows. + * + * @param array $left + * + * @return array + * + * @throws Exception + */ + private function parseNotInfix(array $left): array + { + $this->cursor->shift(); + + $type = match ($this->cursor->current()->opcode) { + Opcode::LIKE->value => Opcode::NLIKE->value, + Opcode::ILIKE->value => Opcode::NILIKE->value, + Opcode::IN->value => Opcode::NOTIN->value, + default => throw $this->cursor->syntaxError(), + }; + + if ($type === Opcode::NOTIN->value) { + return $this->parseIn($left, $type, 6); + } + + $this->cursor->shift(); + $right = $this->parse(11); + $this->cursor->reduce(4); + + return Ast::expr($type, $left, $right); + } + + /** + * expr ::= PARENTHESES_OPEN select_statement PARENTHESES_CLOSE + * expr ::= PARENTHESES_OPEN expr PARENTHESES_CLOSE + * + * @return array + * + * @throws Exception + */ + private function parseParentheses(): array + { + $this->cursor->shift(); + + if ($this->cursor->is(Opcode::SELECT->value)) { + $select = $this->parseSubquery(); + $this->cursor->expect(Opcode::PARENTHESES_CLOSE->value); + $this->cursor->reduce(3); + + return Ast::expr(Opcode::SUBQUERY->value, $select, null); + } + + $inner = $this->parse(); + $this->cursor->expect(Opcode::PARENTHESES_CLOSE->value); + $this->cursor->reduce(3); + + return Ast::expr(Opcode::ENCLOSED->value, $inner, null); + } + + /** + * An operand: a prefix operator with its operand, a parenthesised or + * keyword-led expression, a name, a function call, a literal or a + * placeholder. + * + * @return array + * + * @throws Exception + */ + private function parsePrefix(): array + { + $token = $this->cursor->current(); + + switch ($token->opcode) { + case Opcode::IDENTIFIER->value: + $this->cursor->shift(); + + return $this->identifierTail($token); + + case Opcode::INTEGER->value: + case Opcode::HINTEGER->value: + case Opcode::STRING->value: + case Opcode::DOUBLE->value: + case Opcode::NULL->value: + case Opcode::TRUE->value: + case Opcode::FALSE->value: + $this->cursor->shift(); + + return Ast::literal($token->opcode, $token->value); + + case Opcode::NPLACEHOLDER->value: + case Opcode::SPLACEHOLDER->value: + case Opcode::BPLACEHOLDER->value: + $this->cursor->shift(); + + return Ast::placeholder($token->opcode, (string) $token->value); + + case Opcode::PARENTHESES_OPEN->value: + return $this->parseParentheses(); + + case Opcode::SUB->value: + return $this->parseUnary(Opcode::MINUS->value, 8); + + case Opcode::NOT->value: + return $this->parseUnary(Opcode::NOT->value, 11); + + case Opcode::BITWISE_NOT->value: + return $this->parseUnary(Opcode::BITWISE_NOT->value, 11); + + case Opcode::CASE->value: + return $this->parseCase(); + + case Opcode::CAST->value: + return $this->parseConversion(Opcode::CAST->value, Opcode::AS->value); + + case Opcode::CONVERT->value: + return $this->parseConversion(Opcode::CONVERT->value, Opcode::USING->value); + + case Opcode::EXISTS->value: + return $this->parseExists(); + } + + throw $this->cursor->syntaxError(); + } + + /** + * select_statement, inside an expression. + * + * @return array + * + * @throws Exception + */ + private function parseSubquery(): array + { + return (new StatementParser($this->cursor))->parseSelectStatement(); + } + + /** + * expr ::= MINUS expr | NOT expr | BITWISE_NOT expr + * + * @return array + * + * @throws Exception + */ + private function parseUnary(int $type, int $level): array + { + $this->cursor->shift(); + $operand = $this->parse($level); + $this->cursor->reduce(2); + + return Ast::expr($type, null, $operand); + } + + /** + * qualified_name ::= IDENTIFIER DOT IDENTIFIER, with IDENTIFIER DOT shifted. + * + * @return array + * + * @throws Exception + */ + private function qualifiedTail(Token $domain): array + { + $name = $this->cursor->expect(Opcode::IDENTIFIER->value); + $this->cursor->reduce(3); + + return Ast::qualifiedName((string) $domain->value, (string) $name->value); + } +} diff --git a/src/Parser/StatementParser.php b/src/Parser/StatementParser.php new file mode 100644 index 0000000..8304f30 --- /dev/null +++ b/src/Parser/StatementParser.php @@ -0,0 +1,727 @@ + + * + * For the full copyright and license information, please view the LICENSE.txt + * file that was distributed with this source code. + */ + +declare(strict_types=1); + +namespace Phalcon\Phql\Parser; + +use Phalcon\Phql\Exception; +use Phalcon\Phql\Scanner\Opcode; +use Phalcon\Phql\Scanner\Token; + +/** + * Parses statements and clauses of cphalcon's parser.php.lemon by recursive + * descent, one method per group of rules (each quotes the rules it applies). + * + * Every rule application reports its right-hand-side length to the Cursor + * in the order Lemon reduces, so the Cursor's count is Lemon's stack depth. + * An absent optional clause is Lemon's empty rule for it (`where_clause ::= + * .` and the like) and pushes an entry. Lists are loops: the grammar's lists + * are left-recursive, so Lemon keeps them in one stack entry. + */ +final class StatementParser +{ + private readonly ExpressionParser $expressions; + + public function __construct(private readonly Cursor $cursor) + { + $this->expressions = new ExpressionParser($cursor); + } + + /** + * program ::= query_language + * query_language ::= select_statement | insert_statement + * | update_statement | delete_statement + * + * The statement must end the input: Lemon reduces and accepts on the + * end-of-input token and never shifts it. + * + * @return array + * + * @throws Exception + * + * @phpstan-impure + */ + public function parseProgram(): array + { + $statement = match ($this->cursor->current()->opcode) { + Opcode::SELECT->value => $this->parseSelectStatement(), + Opcode::INSERT->value => $this->parseInsertStatement(), + Opcode::UPDATE->value => $this->parseUpdateStatement(), + Opcode::DELETE->value => $this->parseDeleteStatement(), + default => throw $this->cursor->syntaxError(), + }; + + if (!$this->cursor->is(Token::EOF)) { + throw $this->cursor->syntaxError(); + } + + return $statement; + } + + /** + * select_statement ::= select_clause where_clause group_clause having_clause + * order_clause select_limit_clause for_update_clause + * + * @return array + * + * @throws Exception + * + * @phpstan-impure + */ + public function parseSelectStatement(): array + { + $select = $this->parseSelectClause(); + $where = $this->parseOptionalExpression(Opcode::WHERE->value); + $groupBy = $this->parseGroupClause(); + $having = $this->parseOptionalExpression(Opcode::HAVING->value); + $orderBy = $this->parseOrderClause(); + $limit = $this->parseSelectLimitClause(); + + $forUpdate = null; + if ($this->cursor->is(Opcode::FOR->value)) { + $this->cursor->shift(); + $this->cursor->expect(Opcode::UPDATE->value); + $this->cursor->reduce(2); + $forUpdate = true; + } else { + $this->cursor->reduce(0); + } + + $this->cursor->reduce(7); + + return Ast::selectStatement($select, $where, $orderBy, $groupBy, $having, $limit, $forUpdate); + } + + /** + * associated_name ::= aliased_or_qualified_name + * | aliased_or_qualified_name AS IDENTIFIER + * | aliased_or_qualified_name IDENTIFIER + * each optionally followed by WITH with_item or WITH ( with_list ) + * + * @return array + * + * @throws Exception + */ + private function parseAssociatedName(): array + { + $qualifiedName = $this->parseQualifiedName(); + $length = 1; + + $alias = null; + if ($this->cursor->is(Opcode::AS->value)) { + $this->cursor->shift(); + $alias = (string) $this->cursor->expect(Opcode::IDENTIFIER->value)->value; + $length = 3; + } elseif ($this->cursor->is(Opcode::IDENTIFIER->value)) { + $alias = (string) $this->cursor->shift()->value; + $length = 2; + } + + $with = null; + if ($this->cursor->is(Opcode::WITH->value)) { + $this->cursor->shift(); + if ($this->cursor->is(Opcode::PARENTHESES_OPEN->value)) { + $with = $this->parseWithList(); + $length += 4; + } else { + $with = $this->parseWithItem(); + $length += 2; + } + } + + $this->cursor->reduce($length); + + return Ast::assocName($qualifiedName, $alias, $with); + } + + /** + * associated_name_list ::= associated_name_list COMMA associated_name | associated_name + * + * @return array + * + * @throws Exception + */ + private function parseAssociatedNameList(): array + { + $names = [$this->parseAssociatedName()]; + + while ($this->cursor->is(Opcode::COMMA->value)) { + $this->cursor->shift(); + $names[] = $this->parseAssociatedName(); + $this->cursor->reduce(3); + } + + return Ast::bareIfSingle($names); + } + + /** + * column_item ::= TIMES | IDENTIFIER DOT TIMES | expr AS IDENTIFIER + * | expr IDENTIFIER | expr + * + * @return array + * + * @throws Exception + */ + private function parseColumnItem(): array + { + if ($this->cursor->is(Opcode::MUL->value)) { + $this->cursor->shift(); + + return Ast::columnItem(Opcode::STARALL->value, null, null); + } + + $expression = $this->expressions->parseColumn(); + if ($expression['type'] === Opcode::DOMAINALL->value) { + return $expression; + } + + if ($this->cursor->is(Opcode::AS->value)) { + $this->cursor->shift(); + $alias = $this->cursor->expect(Opcode::IDENTIFIER->value); + $this->cursor->reduce(3); + + return Ast::columnItem(Opcode::EXPR->value, $expression, (string) $alias->value); + } + + if ($this->cursor->is(Opcode::IDENTIFIER->value)) { + $alias = $this->cursor->shift(); + $this->cursor->reduce(2); + + return Ast::columnItem(Opcode::EXPR->value, $expression, (string) $alias->value); + } + + return Ast::columnItem(Opcode::EXPR->value, $expression, null); + } + + /** + * delete_statement ::= delete_clause where_clause limit_clause + * delete_clause ::= DELETE FROM associated_name + * + * @return array + * + * @throws Exception + */ + private function parseDeleteStatement(): array + { + $this->cursor->shift(); + $this->cursor->expect(Opcode::FROM->value); + $tables = $this->parseAssociatedName(); + $this->cursor->reduce(3); + + $where = $this->parseOptionalExpression(Opcode::WHERE->value); + $limit = $this->parseLimitClause(); + $this->cursor->reduce(3); + + return Ast::deleteStatement(Ast::deleteClause($tables), $where, $limit); + } + + /** + * field_item ::= IDENTIFIER + * + * @return array + * + * @throws Exception + */ + private function parseFieldItem(): array + { + return Ast::qualifiedName(null, (string) $this->cursor->expect(Opcode::IDENTIFIER->value)->value); + } + + /** + * group_clause ::= GROUP BY group_list | . + * group_list ::= group_list COMMA group_item | group_item + * + * @return array|null + * + * @throws Exception + */ + private function parseGroupClause(): ?array + { + if (!$this->cursor->is(Opcode::GROUP->value)) { + $this->cursor->reduce(0); + + return null; + } + + $this->cursor->shift(); + $this->cursor->expect(Opcode::BY->value); + + $items = [$this->expressions->parse()]; + while ($this->cursor->is(Opcode::COMMA->value)) { + $this->cursor->shift(); + $items[] = $this->expressions->parse(); + $this->cursor->reduce(3); + } + + $this->cursor->reduce(3); + + return Ast::bareIfSingle($items); + } + + /** + * insert_statement ::= INSERT INTO aliased_or_qualified_name VALUES ( values_list ) + * | INSERT INTO aliased_or_qualified_name ( field_list ) VALUES ( values_list ) + * field_list ::= field_list COMMA field_item | field_item + * field_item ::= IDENTIFIER + * values_list ::= values_list COMMA value_item | value_item + * + * @return array + * + * @throws Exception + */ + private function parseInsertStatement(): array + { + $this->cursor->shift(); + $this->cursor->expect(Opcode::INTO->value); + $qualifiedName = $this->parseQualifiedName(); + + $fields = null; + $length = 7; + if ($this->cursor->is(Opcode::PARENTHESES_OPEN->value)) { + $this->cursor->shift(); + $fields = [$this->parseFieldItem()]; + while ($this->cursor->is(Opcode::COMMA->value)) { + $this->cursor->shift(); + $fields[] = $this->parseFieldItem(); + $this->cursor->reduce(3); + } + + $this->cursor->expect(Opcode::PARENTHESES_CLOSE->value); + $length = 10; + } + + $this->cursor->expect(Opcode::VALUES->value); + $this->cursor->expect(Opcode::PARENTHESES_OPEN->value); + + $values = [$this->expressions->parse()]; + while ($this->cursor->is(Opcode::COMMA->value)) { + $this->cursor->shift(); + $values[] = $this->expressions->parse(); + $this->cursor->reduce(3); + } + + $this->cursor->expect(Opcode::PARENTHESES_CLOSE->value); + $this->cursor->reduce($length); + + return Ast::insertStatement($qualifiedName, $fields, $values); + } + + /** + * integer_or_placeholder ::= INTEGER | HINTEGER | NPLACEHOLDER + * | SPLACEHOLDER | BPLACEHOLDER + * + * @return array + * + * @throws Exception + */ + private function parseIntegerOrPlaceholder(): array + { + $token = $this->cursor->current(); + + return match ($token->opcode) { + Opcode::INTEGER->value, + Opcode::HINTEGER->value => Ast::literal($this->cursor->shift()->opcode, $token->value), + Opcode::NPLACEHOLDER->value, + Opcode::SPLACEHOLDER->value, + Opcode::BPLACEHOLDER->value => Ast::placeholder($this->cursor->shift()->opcode, (string) $token->value), + default => throw $this->cursor->syntaxError(), + }; + } + + /** + * join_clause ::= join_type aliased_or_qualified_name join_associated_name join_conditions + * join_type ::= INNER JOIN | CROSS JOIN | LEFT OUTER JOIN | LEFT JOIN + * | RIGHT OUTER JOIN | RIGHT JOIN | FULL OUTER JOIN | FULL JOIN | JOIN + * join_associated_name ::= AS IDENTIFIER | IDENTIFIER | . + * join_conditions ::= ON expr | . + * + * @return array + * + * @throws Exception + * + * @phpstan-impure + */ + private function parseJoin(): array + { + $type = $this->parseJoinType(); + $name = $this->parseQualifiedName(); + + $alias = null; + if ($this->cursor->is(Opcode::AS->value)) { + $this->cursor->shift(); + $alias = Ast::qualifiedName(null, (string) $this->cursor->expect(Opcode::IDENTIFIER->value)->value); + $this->cursor->reduce(2); + } elseif ($this->cursor->is(Opcode::IDENTIFIER->value)) { + $alias = Ast::qualifiedName(null, (string) $this->cursor->shift()->value); + } else { + $this->cursor->reduce(0); + } + + $conditions = $this->parseOptionalExpression(Opcode::ON->value); + $this->cursor->reduce(4); + + return Ast::joinItem($type, $name, $alias, $conditions); + } + + /** + * join_list_or_null ::= join_list | . + * join_list ::= join_list join_item | join_item + * + * @return array|null + * + * @throws Exception + */ + private function parseJoinListOrNull(): ?array + { + if (!$this->startsJoin()) { + $this->cursor->reduce(0); + + return null; + } + + $joins = [$this->parseJoin()]; + while ($this->startsJoin()) { + $joins[] = $this->parseJoin(); + $this->cursor->reduce(2); + } + + return Ast::bareIfSingle($joins); + } + + /** + * @throws Exception + */ + private function parseJoinType(): int + { + $opcode = $this->cursor->shift()->opcode; + if ($opcode === Opcode::JOIN->value) { + return Opcode::INNERJOIN->value; + } + + $length = 2; + if ( + ($opcode === Opcode::LEFT->value || $opcode === Opcode::RIGHT->value || $opcode === Opcode::FULL->value) + && $this->cursor->is(Opcode::OUTER->value) + ) { + $this->cursor->shift(); + $length = 3; + } + + $this->cursor->expect(Opcode::JOIN->value); + $this->cursor->reduce($length); + + return match ($opcode) { + Opcode::INNER->value => Opcode::INNERJOIN->value, + Opcode::CROSS->value => Opcode::CROSSJOIN->value, + Opcode::LEFT->value => Opcode::LEFTJOIN->value, + Opcode::RIGHT->value => Opcode::RIGHTJOIN->value, + default => Opcode::FULLJOIN->value, + }; + } + + /** + * limit_clause ::= LIMIT integer_or_placeholder | . + * + * @return array|null + * + * @throws Exception + */ + private function parseLimitClause(): ?array + { + if (!$this->cursor->is(Opcode::LIMIT->value)) { + $this->cursor->reduce(0); + + return null; + } + + $this->cursor->shift(); + $number = $this->parseIntegerOrPlaceholder(); + $this->cursor->reduce(2); + + return Ast::limitClause($number, null); + } + + /** + * where_clause ::= WHERE expr | . (and having_clause / join_conditions, + * which have the same shape with HAVING / ON) + * + * @return array|null + * + * @throws Exception + */ + private function parseOptionalExpression(int $keyword): ?array + { + if (!$this->cursor->is($keyword)) { + $this->cursor->reduce(0); + + return null; + } + + $this->cursor->shift(); + $expression = $this->expressions->parse(); + $this->cursor->reduce(2); + + return $expression; + } + + /** + * order_clause ::= ORDER BY order_list | . + * order_list ::= order_list COMMA order_item | order_item + * order_item ::= expr | expr ASC | expr DESC + * + * @return array|null + * + * @throws Exception + */ + private function parseOrderClause(): ?array + { + if (!$this->cursor->is(Opcode::ORDER->value)) { + $this->cursor->reduce(0); + + return null; + } + + $this->cursor->shift(); + $this->cursor->expect(Opcode::BY->value); + + $items = [$this->parseOrderItem()]; + while ($this->cursor->is(Opcode::COMMA->value)) { + $this->cursor->shift(); + $items[] = $this->parseOrderItem(); + $this->cursor->reduce(3); + } + + $this->cursor->reduce(3); + + return Ast::bareIfSingle($items); + } + + /** + * @return array + * + * @throws Exception + */ + private function parseOrderItem(): array + { + $column = $this->expressions->parse(); + + $sort = $this->cursor->current()->opcode; + if ($sort !== Opcode::ASC->value && $sort !== Opcode::DESC->value) { + return Ast::orderItem($column, 0); + } + + $this->cursor->shift(); + $this->cursor->reduce(2); + + return Ast::orderItem($column, $sort); + } + + /** + * qualified_name ::= IDENTIFIER DOT IDENTIFIER | IDENTIFIER + * + * @return array + * + * @throws Exception + */ + private function parseQualifiedName(): array + { + $first = $this->cursor->expect(Opcode::IDENTIFIER->value); + if (!$this->cursor->is(Opcode::DOT->value)) { + return Ast::qualifiedName(null, (string) $first->value); + } + + $this->cursor->shift(); + $name = $this->cursor->expect(Opcode::IDENTIFIER->value); + $this->cursor->reduce(3); + + return Ast::qualifiedName((string) $first->value, (string) $name->value); + } + + /** + * select_clause ::= SELECT distinct_all column_list FROM associated_name_list join_list_or_null + * distinct_all ::= DISTINCT | ALL | . + * column_list ::= column_list COMMA column_item | column_item + * + * @return array + * + * @throws Exception + */ + private function parseSelectClause(): array + { + $this->cursor->expect(Opcode::SELECT->value); + + $distinct = null; + if ($this->cursor->is(Opcode::DISTINCT->value)) { + $this->cursor->shift(); + $distinct = 1; + } elseif ($this->cursor->is(Opcode::ALL->value)) { + $this->cursor->shift(); + $distinct = 0; + } else { + $this->cursor->reduce(0); + } + + $columns = [$this->parseColumnItem()]; + while ($this->cursor->is(Opcode::COMMA->value)) { + $this->cursor->shift(); + $columns[] = $this->parseColumnItem(); + $this->cursor->reduce(3); + } + + $this->cursor->expect(Opcode::FROM->value); + $tables = $this->parseAssociatedNameList(); + $joins = $this->parseJoinListOrNull(); + $this->cursor->reduce(6); + + return Ast::selectClause($distinct, $columns, $tables, $joins); + } + + /** + * select_limit_clause ::= LIMIT integer_or_placeholder + * | LIMIT integer_or_placeholder COMMA integer_or_placeholder + * | LIMIT integer_or_placeholder OFFSET integer_or_placeholder + * | . + * + * `LIMIT a, b` is offset a, number b. + * + * @return array|null + * + * @throws Exception + */ + private function parseSelectLimitClause(): ?array + { + if (!$this->cursor->is(Opcode::LIMIT->value)) { + $this->cursor->reduce(0); + + return null; + } + + $this->cursor->shift(); + $first = $this->parseIntegerOrPlaceholder(); + + if ($this->cursor->is(Opcode::COMMA->value)) { + $this->cursor->shift(); + $number = $this->parseIntegerOrPlaceholder(); + $this->cursor->reduce(4); + + return Ast::limitClause($number, $first); + } + + if ($this->cursor->is(Opcode::OFFSET->value)) { + $this->cursor->shift(); + $offset = $this->parseIntegerOrPlaceholder(); + $this->cursor->reduce(4); + + return Ast::limitClause($first, $offset); + } + + $this->cursor->reduce(2); + + return Ast::limitClause($first, null); + } + + /** + * @return array + * + * @throws Exception + */ + private function parseUpdateItem(): array + { + $column = $this->parseQualifiedName(); + $this->cursor->expect(Opcode::EQUALS->value); + $value = $this->expressions->parse(); + $this->cursor->reduce(3); + + return Ast::updateItem($column, $value); + } + + /** + * update_statement ::= update_clause where_clause limit_clause + * update_clause ::= UPDATE associated_name join_list_or_null SET update_item_list + * update_item_list ::= update_item_list COMMA update_item | update_item + * update_item ::= qualified_name EQUALS new_value + * + * @return array + * + * @throws Exception + */ + private function parseUpdateStatement(): array + { + $this->cursor->shift(); + $tables = $this->parseAssociatedName(); + $joins = $this->parseJoinListOrNull(); + $this->cursor->expect(Opcode::SET->value); + + $items = [$this->parseUpdateItem()]; + while ($this->cursor->is(Opcode::COMMA->value)) { + $this->cursor->shift(); + $items[] = $this->parseUpdateItem(); + $this->cursor->reduce(3); + } + + $this->cursor->reduce(5); + + $where = $this->parseOptionalExpression(Opcode::WHERE->value); + $limit = $this->parseLimitClause(); + $this->cursor->reduce(3); + + return Ast::updateStatement(Ast::updateClause($tables, $joins, Ast::bareIfSingle($items)), $where, $limit); + } + + /** + * with_item ::= IDENTIFIER + * + * @return array + * + * @throws Exception + */ + private function parseWithItem(): array + { + return Ast::qualifiedName(null, (string) $this->cursor->expect(Opcode::IDENTIFIER->value)->value); + } + + /** + * PARENTHESES_OPEN with_list PARENTHESES_CLOSE + * with_list ::= with_list COMMA with_item | with_item + * + * @return array + * + * @throws Exception + */ + private function parseWithList(): array + { + $this->cursor->shift(); + + $items = [$this->parseWithItem()]; + while ($this->cursor->is(Opcode::COMMA->value)) { + $this->cursor->shift(); + $items[] = $this->parseWithItem(); + $this->cursor->reduce(3); + } + + $this->cursor->expect(Opcode::PARENTHESES_CLOSE->value); + + return Ast::bareIfSingle($items); + } + + private function startsJoin(): bool + { + $opcode = $this->cursor->current()->opcode; + + return $opcode === Opcode::JOIN->value + || $opcode === Opcode::INNER->value + || $opcode === Opcode::CROSS->value + || $opcode === Opcode::LEFT->value + || $opcode === Opcode::RIGHT->value + || $opcode === Opcode::FULL->value; + } +} diff --git a/src/Parser/Status.php b/src/Parser/Status.php deleted file mode 100644 index dda3020..0000000 --- a/src/Parser/Status.php +++ /dev/null @@ -1,97 +0,0 @@ -|null $ast */ - private array | null $ast = null; - - private bool $enableLiterals = false; - - private ?string $syntaxError = null; - - private ?Token $token = null; - - public function __construct( - private readonly State $scannerState, - private int $status = self::PHQL_PARSING_OK, - ) { - } - - /** @return array|null */ - public function getAst(): array | null - { - return $this->ast; - } - - public function getEnableLiterals(): bool - { - return $this->enableLiterals; - } - - public function getState(): State - { - return $this->scannerState; - } - - public function getStatus(): int - { - return $this->status; - } - - public function getSyntaxError(): ?string - { - return $this->syntaxError; - } - - public function getToken(): ?Token - { - return $this->token; - } - - /** @param array $ast */ - public function setAst(array $ast): static - { - $this->ast = $ast; - - return $this; - } - - public function setEnableLiterals(bool $enable): static - { - $this->enableLiterals = $enable; - - return $this; - } - - public function setStatus(int $status): static - { - $this->status = $status; - - return $this; - } - - public function setSyntaxError(string $syntaxError): static - { - $this->syntaxError = $syntaxError; - - return $this; - } - - public function setToken(Token $token): static - { - $this->token = $token; - - return $this; - } -} diff --git a/src/Parser/TokenStream.php b/src/Parser/TokenStream.php new file mode 100644 index 0000000..b326376 --- /dev/null +++ b/src/Parser/TokenStream.php @@ -0,0 +1,176 @@ + + * + * For the full copyright and license information, please view the LICENSE.txt + * file that was distributed with this source code. + */ + +declare(strict_types=1); + +namespace Phalcon\Phql\Parser; + +use Phalcon\Phql\Exception; +use Phalcon\Phql\Scanner\Opcode; +use Phalcon\Phql\Scanner\Scanner; +use Phalcon\Phql\Scanner\Token; +use Phalcon\Phql\Tokens; + +use function sprintf; +use function strlen; +use function strpos; +use function substr; + +/** + * Feeds the parser one significant token at a time, as the token loop of + * cphalcon's phql_internal_parse_phql() (ext/phalcon/mvc/model/query/base.c) + * does, and builds every error message that loop and the Lemon grammar's + * %syntax_error produce. + * + * For each token scanned - whitespace included - it records the token as the + * "active" one and how many bytes follow it (`start_length`); the error + * messages are built from these, not from the token the parser failed on. + * End of input and scanning errors update neither. + */ +final class TokenStream +{ + private const LITERALS_DISABLED = 'Literals are disabled in PHQL statements'; + + private const NESTED_TOO_DEEPLY = 'Parsing failed, the PHQL statement is nested too deeply'; + + private int $activeOpcode = 0; + + private readonly int $length; + + private readonly Scanner $scanner; + + private int $startLength = 0; + + public function __construct(private readonly string $phql, private readonly bool $enableLiterals) + { + $this->scanner = new Scanner($phql); + $this->length = strlen($phql); + } + + /** + * The next token that is not whitespace, or the EOF token. + * + * @throws Exception on a scanning error, a literal while literals are + * disabled, or a token the parser has no terminal for + */ + public function next(): Token + { + while (true) { + $token = $this->scanner->next(); + $opcode = $token->opcode; + + if ($opcode === Token::EOF) { + return $token; + } + + if ($opcode === Token::SCAN_ERROR) { + throw new Exception($this->scanningError()); + } + + $this->startLength = $this->length - $this->scanner->cursor(); + $this->activeOpcode = $opcode; + + if ($opcode === Opcode::IGNORE->value) { + continue; + } + + if (!$this->enableLiterals && $this->isLiteral($opcode)) { + throw new Exception(self::LITERALS_DISABLED); + } + + // base.c hands every scanner token to the parser but COLON, which + // reaches the `default:` branch of its switch. + if ($opcode === Opcode::COLON->value) { + throw new Exception(sprintf('Scanner: Unknown opcode %d', $opcode)); + } + + return $token; + } + } + + public function stackOverflow(): Exception + { + return new Exception(self::NESTED_TOO_DEEPLY); + } + + /** + * The %syntax_error message of parser.php.lemon. It names the last + * token scanned and quotes the input after it, so an error on the + * input's last byte reads as end of input. The value is printed for + * value tokens only, even when empty or "0". The quoted parts are C + * strings and end at the first NUL; the length counts every byte. + */ + public function syntaxError(Token $lookahead): Exception + { + if ($this->startLength === 0) { + return new Exception('Syntax error, unexpected EOF'); + } + + $name = Tokens::name($this->activeOpcode); + if ($lookahead->value !== null) { + $name .= '(' . $lookahead->value . ')'; + } + + return new Exception(sprintf( + "Syntax error, unexpected token %s, near to '%s', when parsing: %s (%d)", + $name, + $this->cString(substr($this->phql, $this->scanner->cursor())), + $this->cString($this->phql), + $this->length + )); + } + + /** + * A string as C's `%s` prints it: up to its first NUL byte. + */ + private function cString(string $bytes): string + { + $nul = strpos($bytes, "\0"); + + return $nul === false ? $bytes : substr($bytes, 0, $nul); + } + + private function isLiteral(int $opcode): bool + { + return $opcode === Opcode::INTEGER->value + || $opcode === Opcode::DOUBLE->value + || $opcode === Opcode::STRING->value + || $opcode === Opcode::HINTEGER->value + || $opcode === Opcode::TRUE->value + || $opcode === Opcode::FALSE->value; + } + + /** + * phql_scanner_error_msg() of base.c. It quotes the input after the + * offending byte, cut to 16 bytes when more than 16 bytes followed the + * previous token - the last `start_length` recorded, 0 before any token. + * + * C formats into a buffer of 64 + start_length + statement length bytes, + * which is too small when the very first token fails (start_length 0) + * and the statement is long: the message then loses its end. + */ + private function scanningError(): string + { + $rest = $this->cString(substr($this->phql, $this->scanner->cursor())); + if ($this->startLength > 16) { + $rest = $this->cString(substr($this->phql, $this->scanner->cursor(), 16)) . '...'; + } + + $message = sprintf( + "Scanning error before '%s' when parsing: %s (%d)", + $rest, + $this->cString($this->phql), + $this->length + ); + + return substr($message, 0, 63 + $this->startLength + $this->length); + } +} diff --git a/src/Scanner/Scanner.php b/src/Scanner/Scanner.php index fc29046..2440bcb 100644 --- a/src/Scanner/Scanner.php +++ b/src/Scanner/Scanner.php @@ -1,7801 +1,457 @@ + * + * For the full copyright and license information, please view the LICENSE.txt + * file that was distributed with this source code. + */ + declare(strict_types=1); namespace Phalcon\Phql\Scanner; -use Exception; - -class Scanner +use function ord; +use function str_contains; +use function strcspn; +use function strlen; +use function strncasecmp; +use function strpos; +use function strspn; +use function strtr; +use function substr; + +/** + * Turns a PHQL statement into tokens, one per call, exactly as cphalcon's + * re2c scanner (ext/phalcon/mvc/model/query/scanner.re) does: the longest + * match wins, and between matches of equal length the rule listed first. + * + * The scanner works on bytes and stops at the first NUL byte, as the C + * scanner stops at the end of its C string. Every rule is matched with + * strspn()/strcspn() runs from the cursor, so scanning is linear in the input + * and never copies more than a token's own text. + */ +final class Scanner { - private Token $token; - - public function __construct(private readonly State $state) + /** + * BPLACEHOLDER = "{"[a-zA-Z0-9_:\-]+"}" + */ + private const BPLACEHOLDER_NAME = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_:-'; + + private const DIGITS = '0123456789'; + + /** + * Escape sequences phql_unescape_string() replaces; any other escape + * keeps its backslash. strtr() replaces left to right without rescanning + * its output, as the C loop does. + */ + private const ESCAPES = [ + '\\n' => "\n", + '\\r' => "\r", + '\\t' => "\t", + '\\\\' => '\\', + "\\'" => "'", + '\\"' => '"', + ]; + + /** + * HINTEGER = [x0-9A-Fa-f]+ + */ + private const HEX = 'x0123456789ABCDEFabcdef'; + + /** + * Characters after the first one of IDENTIFIER = [\\]?[a-zA-Z_][a-zA-Z0-9_\\:]* + */ + private const IDENTIFIER_TAIL = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_\\:'; + + /** + * Case-insensitive keywords. Every keyword is also a valid IDENTIFIER, so + * a word is a keyword only when the identifier match is exactly the + * keyword (re2c prefers the longer `selected` or `select:`). + */ + private const KEYWORDS = [ + 'update' => Opcode::UPDATE, + 'set' => Opcode::SET, + 'delete' => Opcode::DELETE, + 'from' => Opcode::FROM, + 'as' => Opcode::AS, + 'insert' => Opcode::INSERT, + 'into' => Opcode::INTO, + 'values' => Opcode::VALUES, + 'where' => Opcode::WHERE, + 'select' => Opcode::SELECT, + 'order' => Opcode::ORDER, + 'by' => Opcode::BY, + 'asc' => Opcode::ASC, + 'desc' => Opcode::DESC, + 'group' => Opcode::GROUP, + 'having' => Opcode::HAVING, + 'limit' => Opcode::LIMIT, + 'offset' => Opcode::OFFSET, + 'not' => Opcode::NOT, + 'and' => Opcode::AND, + 'or' => Opcode::OR, + 'like' => Opcode::LIKE, + 'ilike' => Opcode::ILIKE, + 'against' => Opcode::AGAINST, + 'in' => Opcode::IN, + 'on' => Opcode::ON, + 'join' => Opcode::JOIN, + 'inner' => Opcode::INNER, + 'left' => Opcode::LEFT, + 'right' => Opcode::RIGHT, + 'cross' => Opcode::CROSS, + 'outer' => Opcode::OUTER, + 'full' => Opcode::FULL, + 'is' => Opcode::IS, + 'null' => Opcode::NULL, + 'distinct' => Opcode::DISTINCT, + 'all' => Opcode::ALL, + 'between' => Opcode::BETWEEN, + 'cast' => Opcode::CAST, + 'convert' => Opcode::CONVERT, + 'using' => Opcode::USING, + 'exists' => Opcode::EXISTS, + 'true' => Opcode::TRUE, + 'false' => Opcode::FALSE, + 'case' => Opcode::CASE, + 'when' => Opcode::WHEN, + 'then' => Opcode::THEN, + 'else' => Opcode::ELSE, + 'end' => Opcode::END, + 'for' => Opcode::FOR, + 'with' => Opcode::WITH, + ]; + + /** + * ASCII case folding for keyword lookup. strtolower() follows the locale + * before PHP 8.2 (under a Turkish one `I` does not lower to `i`), while + * cphalcon compares keywords byte by byte. + */ + private const LOWER_CASE = 'abcdefghijklmnopqrstuvwxyz'; + + /** + * SPLACEHOLDER = ":"[a-zA-Z0-9_\-]+":" + */ + private const SPLACEHOLDER_NAME = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-'; + + private const UPPER_CASE = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'; + + /** + * Byte offset just after the last token, cphalcon's `state->start`. + */ + private int $cursor = 0; + + /** + * Offset of the first NUL byte, or the length of the statement. + */ + private readonly int $end; + + public function __construct(private readonly string $phql) { - $this->token = new Token(); + $nul = strpos($phql, "\0"); + $this->end = $nul === false ? strlen($phql) : $nul; } - public function getToken(): Token + /** + * Byte offset just after the last token returned. After an EOF token it + * is one past the NUL (or the end), after a SCAN_ERROR one past the + * offending byte - where the C scanner leaves its cursor. + */ + public function cursor(): int { - return $this->token; + return $this->cursor; } - public function scanForToken(): ScannerStatus + /** + * Scans the next token, including whitespace (Opcode::IGNORE). + */ + public function next(): Token { - $yyinput = $this->state->getRawBuffer(); - $yycursor = $this->state->getCursor(); + $at = $this->cursor; + if ($at >= $this->end) { + $this->cursor = $at + 1; - if ($yycursor >= $this->state->getBufferLength()) { - return ScannerStatus::EOF; + return new Token(Token::EOF); } - $q = $yycursor; - $yymarker = $yycursor; - $status = ScannerStatus::IMPOSSIBLE; - - - while (ScannerStatus::IMPOSSIBLE === $status) { - if ($yycursor >= $this->state->getBufferLength()) { - return ScannerStatus::EOF; - } - $yych = 0; - $yyaccept = 0; - $yystate = 0; - while (true) { - switch ($yystate) { - case 0: - $yych = $yyinput[$yycursor]; - $yycursor += 1; - switch ($yych) { - case "\x00": - $yystate = 1; - break 2; - case "\t": - case "\n": - case "\r": - case ' ': - $yystate = 4; - break 2; - case '!': - $yystate = 6; - break 2; - case '"': - $yystate = 8; - break 2; - case '#': - $yystate = 319; - break 2; - case '%': - $yystate = 9; - break 2; - case '&': - $yystate = 10; - break 2; - case '\'': - $yystate = 12; - break 2; - case '(': - $yystate = 13; - break 2; - case ')': - $yystate = 14; - break 2; - case '*': - $yystate = 15; - break 2; - case '+': - $yystate = 16; - break 2; - case ',': - $yystate = 17; - break 2; - case '-': - $yystate = 18; - break 2; - case '.': - $yystate = 19; - break 2; - case '/': - $yystate = 21; - break 2; - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - $yystate = 22; - break 2; - case ':': - $yystate = 24; - break 2; - case '<': - $yystate = 26; - break 2; - case '=': - $yystate = 28; - break 2; - case '>': - $yystate = 29; - break 2; - case '?': - $yystate = 31; - break 2; - case '@': - $yystate = 32; - break 2; - case 'A': - case 'a': - $yystate = 33; - break 2; - case 'B': - case 'b': - $yystate = 35; - break 2; - case 'C': - case 'c': - $yystate = 36; - break 2; - case 'D': - case 'd': - $yystate = 37; - break 2; - case 'E': - case 'e': - $yystate = 38; - break 2; - case 'F': - case 'f': - $yystate = 39; - break 2; - case 'G': - case 'g': - $yystate = 40; - break 2; - case 'H': - case 'h': - $yystate = 42; - break 2; - case 'I': - case 'i': - $yystate = 43; - break 2; - case 'J': - case 'j': - $yystate = 44; - break 2; - case 'K': - case 'M': - case 'P': - case 'Q': - case 'X': - case 'Y': - case 'Z': - case '_': - case 'k': - case 'm': - case 'p': - case 'q': - case 'y': - case 'z': - $yystate = 45; - break 2; - case 'L': - case 'l': - $yystate = 47; - break 2; - case 'N': - case 'n': - $yystate = 48; - break 2; - case 'O': - case 'o': - $yystate = 49; - break 2; - case 'R': - case 'r': - $yystate = 50; - break 2; - case 'S': - case 's': - $yystate = 51; - break 2; - case 'T': - case 't': - $yystate = 52; - break 2; - case 'U': - case 'u': - $yystate = 53; - break 2; - case 'V': - case 'v': - $yystate = 54; - break 2; - case 'W': - case 'w': - $yystate = 55; - break 2; - case '[': - $yystate = 56; - break 2; - case '\\': - $yystate = 57; - break 2; - case '^': - $yystate = 58; - break 2; - case 'x': - $yystate = 59; - break 2; - case '{': - $yystate = 61; - break 2; - case '|': - $yystate = 62; - break 2; - case '~': - $yystate = 64; - break 2; - default: - $yystate = 2; - break 2; - } - // no break - case 1: - $status = ScannerStatus::EOF; - break 2; - - case 2: - $yystate = 3; - break; - case 3: - $status = ScannerStatus::ERR; - break 2; - - case 4: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case "\t": - case "\n": - case "\r": - case ' ': - $yycursor += 1; - $yystate = 4; - break 2; - default: - $yystate = 5; - break 2; - } - // no break - case 5: - $this->token = new Token(Opcode::IGNORE); - $this->state->setCursor($yycursor); - return ScannerStatus::OK; - - case 6: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '=': - $yycursor += 1; - $yystate = 66; - break 2; - default: - $yystate = 7; - break 2; - } - // no break - case 7: - $this->token = new Token(Opcode::NOT); - $this->state->setCursor($yycursor); - return ScannerStatus::OK; - - case 8: - $yyaccept = 0; - $yymarker = $yycursor; - $yych = $yyinput[$yycursor]; - if ($yych === "\x00") { - $yystate = 3; - break; - } - $yystate = 68; - break; - case 9: - $this->token = new Token(Opcode::MOD); - $this->state->setCursor($yycursor); - return ScannerStatus::OK; - - case 10: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '&': - $yycursor += 1; - $yystate = 72; - break 2; - default: - $yystate = 11; - break 2; - } - // no break - case 11: - $this->token = new Token(Opcode::BITWISE_AND); - $this->state->setCursor($yycursor); - return ScannerStatus::OK; - - case 12: - $yyaccept = 0; - $yymarker = $yycursor; - $yych = $yyinput[$yycursor]; - if ($yych === "\x00") { - $yystate = 3; - break; - } - $yystate = 74; - break; - case 13: - $this->token = new Token(Opcode::PARENTHESES_OPEN); - $this->state->setCursor($yycursor); - return ScannerStatus::OK; - - case 14: - $this->token = new Token(Opcode::PARENTHESES_CLOSE); - $this->state->setCursor($yycursor); - return ScannerStatus::OK; - - case 15: - $this->token = new Token(Opcode::MUL); - $this->state->setCursor($yycursor); - return ScannerStatus::OK; - - case 16: - $this->token = new Token(Opcode::ADD); - $this->state->setCursor($yycursor); - return ScannerStatus::OK; - - case 17: - $this->token = new Token(Opcode::COMMA); - $this->state->setCursor($yycursor); - return ScannerStatus::OK; - - case 18: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '>': - $yycursor += 1; - $yystate = 323; - break 2; - default: - $yystate = 324; - break 2; - } - // no break - case 19: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - $yycursor += 1; - $yystate = 76; - break 2; - default: - $yystate = 20; - break 2; - } - // no break - case 20: - $this->token = new Token(Opcode::DOT); - $this->state->setCursor($yycursor); - return ScannerStatus::OK; - - case 21: - $this->token = new Token(Opcode::DIV); - $this->state->setCursor($yycursor); - return ScannerStatus::OK; - - case 22: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '.': - $yycursor += 1; - $yystate = 76; - break 2; - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - $yycursor += 1; - $yystate = 22; - break 2; - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'x': - $yycursor += 1; - $yystate = 78; - break 2; - default: - $yystate = 23; - break 2; - } - // no break - case 23: - $this->token = new Token(Opcode::INTEGER, substr($yyinput, $q, $yycursor - $q), $yycursor - $q); - $q = $yycursor; - $this->state->setCursor($yycursor); - return ScannerStatus::OK; - - case 24: - $yyaccept = 1; - $yymarker = $yycursor; - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '-': - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '_': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - $yycursor += 1; - $yystate = 79; - break 2; - default: - $yystate = 25; - break 2; - } - // no break - case 25: - $this->token = new Token(Opcode::COLON); - $this->state->setCursor($yycursor); - return ScannerStatus::OK; - - case 26: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '=': - $yycursor += 1; - $yystate = 80; - break 2; - case '>': - $yycursor += 1; - $yystate = 81; - break 2; - case '@': - $yycursor += 1; - $yystate = 327; - break 2; - default: - $yystate = 27; - break 2; - } - // no break - case 27: - $this->token = new Token(Opcode::LESS); - $this->state->setCursor($yycursor); - return ScannerStatus::OK; - - case 28: - $this->token = new Token(Opcode::EQUALS); - $this->state->setCursor($yycursor); - return ScannerStatus::OK; - - case 29: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '=': - $yycursor += 1; - $yystate = 82; - break 2; - default: - $yystate = 30; - break 2; - } - // no break - case 30: - $this->token = new Token(Opcode::GREATER); - $this->state->setCursor($yycursor); - return ScannerStatus::OK; - - case 31: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - $yycursor += 1; - $yystate = 83; - break 2; - default: - $yystate = 3; - break 2; - } - // no break - case 32: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '>': - $yycursor += 1; - $yystate = 85; - break 2; - case '@': - $yycursor += 1; - $yystate = 86; - break 2; - default: - $yystate = 3; - break 2; - } - // no break - case 33: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'G': - case 'g': - $yycursor += 1; - $yystate = 87; - break 2; - case 'L': - case 'l': - $yycursor += 1; - $yystate = 88; - break 2; - case 'N': - case 'n': - $yycursor += 1; - $yystate = 89; - break 2; - case 'S': - case 's': - $yycursor += 1; - $yystate = 90; - break 2; - default: - $yystate = 60; - break 2; - } - // no break - case 34: - $tokenValue = substr($yyinput, $q, $yycursor - $q); - $tokenLen = $yycursor - $q; - if ($tokenLen > 2 && str_starts_with($tokenValue, "0x")) { - $this->token = new Token(Opcode::HINTEGER, $tokenValue, $tokenLen); - } else { - $alpha = 0; - for ($i = 0; $i < $tokenLen; $i++) { - $ch = $tokenValue[$i]; - if (!(($ch >= '0') && ($ch <= '9'))) { - $alpha = 1; - break; - } - } - - if ($alpha) { - $this->token = new Token(Opcode::IDENTIFIER, $tokenValue, $tokenLen); - } else { - $this->token = new Token(Opcode::INTEGER, $tokenValue, $tokenLen); - } - } - - $q = $yycursor; - $this->state->setCursor($yycursor); - return ScannerStatus::OK; - - case 35: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'E': - case 'e': - $yycursor += 1; - $yystate = 92; - break 2; - case 'Y': - case 'y': - $yycursor += 1; - $yystate = 93; - break 2; - default: - $yystate = 60; - break 2; - } - // no break - case 36: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'A': - case 'a': - $yycursor += 1; - $yystate = 95; - break 2; - case 'O': - case 'o': - $yycursor += 1; - $yystate = 96; - break 2; - case 'R': - case 'r': - $yycursor += 1; - $yystate = 97; - break 2; - default: - $yystate = 60; - break 2; - } - // no break - case 37: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'E': - case 'e': - $yycursor += 1; - $yystate = 98; - break 2; - case 'I': - case 'i': - $yycursor += 1; - $yystate = 99; - break 2; - default: - $yystate = 60; - break 2; - } - // no break - case 38: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'L': - case 'l': - $yycursor += 1; - $yystate = 100; - break 2; - case 'N': - case 'n': - $yycursor += 1; - $yystate = 101; - break 2; - case 'X': - $yycursor += 1; - $yystate = 102; - break 2; - case 'x': - $yycursor += 1; - $yystate = 103; - break 2; - default: - $yystate = 60; - break 2; - } - // no break - case 39: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'A': - case 'a': - $yycursor += 1; - $yystate = 104; - break 2; - case 'O': - case 'o': - $yycursor += 1; - $yystate = 105; - break 2; - case 'R': - case 'r': - $yycursor += 1; - $yystate = 106; - break 2; - case 'U': - case 'u': - $yycursor += 1; - $yystate = 107; - break 2; - default: - $yystate = 60; - break 2; - } - // no break - case 40: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'R': - case 'r': - $yycursor += 1; - $yystate = 108; - break 2; - default: - $yystate = 46; - break 2; - } - // no break - case 41: - // Use $q (the token start), not the re2c save-point $yymarker. - // Keyword save-point states (e.g. NOT at state 176) overwrite - // $yymarker, which would otherwise truncate identifiers like - // "Notes" to the post-keyword suffix ("es"). - $tokenValue = null; - $tokenLen = 0; - if (($yycursor - $q) > 1) { - if ($yyinput[$q] === '\\') { - $tokenValue = substr($yyinput, $q + 1, $yycursor - $q - 1); - $tokenLen = $yycursor - $q - 1; - } else { - $tokenValue = substr($yyinput, $q, $yycursor - $q); - $tokenLen = $yycursor - $q; - } - } else { - $tokenValue = substr($yyinput, $q, $yycursor - $q); - $tokenLen = $yycursor - $q; - } - $q = $yycursor; - $this->state->setCursor($yycursor); - $this->token = new Token(Opcode::IDENTIFIER, $tokenValue, $tokenLen); - return ScannerStatus::OK; - - case 42: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'A': - case 'a': - $yycursor += 1; - $yystate = 109; - break 2; - default: - $yystate = 46; - break 2; - } - // no break - case 43: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'L': - case 'l': - $yycursor += 1; - $yystate = 110; - break 2; - case 'N': - case 'n': - $yycursor += 1; - $yystate = 111; - break 2; - case 'S': - case 's': - $yycursor += 1; - $yystate = 113; - break 2; - default: - $yystate = 46; - break 2; - } - // no break - case 44: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'O': - case 'o': - $yycursor += 1; - $yystate = 115; - break 2; - default: - $yystate = 46; - break 2; - } - // no break - case 45: - $yych = $yyinput[$yycursor]; - // fall through - // no break - case 46: - switch ($yych) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case ':': - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '\\': - case '_': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - $yycursor += 1; - $yystate = 45; - break 2; - default: - $yystate = 41; - break 2; - } - // no break - case 47: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'E': - case 'e': - $yycursor += 1; - $yystate = 116; - break 2; - case 'I': - case 'i': - $yycursor += 1; - $yystate = 117; - break 2; - default: - $yystate = 46; - break 2; - } - // no break - case 48: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'O': - case 'o': - $yycursor += 1; - $yystate = 118; - break 2; - case 'U': - case 'u': - $yycursor += 1; - $yystate = 119; - break 2; - default: - $yystate = 46; - break 2; - } - // no break - case 49: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'F': - case 'f': - $yycursor += 1; - $yystate = 120; - break 2; - case 'N': - case 'n': - $yycursor += 1; - $yystate = 121; - break 2; - case 'R': - case 'r': - $yycursor += 1; - $yystate = 123; - break 2; - case 'U': - case 'u': - $yycursor += 1; - $yystate = 125; - break 2; - default: - $yystate = 46; - break 2; - } - // no break - case 50: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'I': - case 'i': - $yycursor += 1; - $yystate = 126; - break 2; - default: - $yystate = 46; - break 2; - } - // no break - case 51: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'E': - case 'e': - $yycursor += 1; - $yystate = 127; - break 2; - default: - $yystate = 46; - break 2; - } - // no break - case 52: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'H': - case 'h': - $yycursor += 1; - $yystate = 128; - break 2; - case 'R': - case 'r': - $yycursor += 1; - $yystate = 129; - break 2; - default: - $yystate = 46; - break 2; - } - // no break - case 53: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'P': - case 'p': - $yycursor += 1; - $yystate = 130; - break 2; - case 'S': - case 's': - $yycursor += 1; - $yystate = 131; - break 2; - default: - $yystate = 46; - break 2; - } - // no break - case 54: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'A': - case 'a': - $yycursor += 1; - $yystate = 132; - break 2; - default: - $yystate = 46; - break 2; - } - // no break - case 55: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'H': - case 'h': - $yycursor += 1; - $yystate = 133; - break 2; - case 'I': - case 'i': - $yycursor += 1; - $yystate = 134; - break 2; - default: - $yystate = 46; - break 2; - } - // no break - case 56: - $yyaccept = 0; - $yymarker = $yycursor; - $yych = $yyinput[$yycursor]; - switch ($yych) { - case "\x00": - case "\x01": - case "\x02": - case "\x03": - case "\x04": - case "\x05": - case "\x06": - case "\x07": - case "\x08": - case "\t": - case "\n": - case "\v": - case "\f": - case "\r": - case 0x0E: - case 0x0F: - case 0x10: - case 0x11: - case 0x12: - case 0x13: - case 0x14: - case 0x15: - case 0x16: - case 0x17: - case 0x18: - case 0x19: - case 0x1A: - case 0x1B: - case 0x1C: - case 0x1D: - case 0x1E: - case 0x1F: - case '[': - case 0x7F: - $yystate = 3; - break 2; - default: - $yystate = 136; - break 2; - } - // no break - case 57: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '_': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - $yycursor += 1; - $yystate = 45; - break 2; - default: - $yystate = 3; - break 2; - } - // no break - case 58: - $this->token = new Token(Opcode::BITWISE_XOR); - $this->state->setCursor($yycursor); - return ScannerStatus::OK; - - case 59: - $yych = $yyinput[$yycursor]; - // fall through - // no break - case 60: - switch ($yych) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'x': - $yycursor += 1; - $yystate = 59; - break 2; - case ':': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '\\': - case '_': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'y': - case 'z': - $yycursor += 1; - $yystate = 45; - break 2; - default: - $yystate = 34; - break 2; - } - // no break - case 61: - $yyaccept = 0; - $yymarker = $yycursor; - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '-': - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case ':': - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '_': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - $yycursor += 1; - $yystate = 140; - break 2; - default: - $yystate = 3; - break 2; - } - // no break - case 62: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '|': - $yycursor += 1; - $yystate = 141; - break 2; - default: - $yystate = 63; - break 2; - } - // no break - case 63: - $this->token = new Token(Opcode::BITWISE_OR); - $this->state->setCursor($yycursor); - return ScannerStatus::OK; - - case 64: - $this->token = new Token(Opcode::BITWISE_NOT); - $this->state->setCursor($yycursor); - return ScannerStatus::OK; - - case 66: - $this->token = new Token(Opcode::NOTEQUALS); - $this->state->setCursor($yycursor); - return ScannerStatus::OK; - - case 67: - $yych = $yyinput[$yycursor]; - // fall through - // no break - case 68: - switch ($yych) { - case "\x00": - $yystate = 69; - break 2; - case '"': - $yycursor += 1; - $yystate = 70; - break 2; - case '\\': - $yycursor += 1; - $yystate = 71; - break 2; - default: - $yycursor += 1; - $yystate = 67; - break 2; - } - // no break - case 69: - $yycursor = $yymarker; - switch ($yyaccept) { - case 0: - $yystate = 3; - break 2; - case 1: - $yystate = 25; - break 2; - case 2: - $yystate = 177; - break 2; - default: - $yystate = 139; - break 2; - } - // no break - case 70: - // $q is the opening quote; skip it and drop the closing quote. - $this->token = new Token( - Opcode::STRING, - substr($yyinput, $q + 1, $yycursor - $q - 2), - $yycursor - $q - 2 - ); - $q = $yycursor; - $this->state->setCursor($yycursor); - return ScannerStatus::OK; - - case 71: - $yych = $yyinput[$yycursor]; - switch ($yych) { - // An escape cannot consume the end-of-input sentinel. - case "\x00": - case "\n": - $yystate = 69; - break 2; - default: - $yycursor += 1; - $yystate = 67; - break 2; - } - // no break - case 72: - $this->token = new Token(Opcode::OP_OVERLAPS); - $this->state->setCursor($yycursor); - return ScannerStatus::OK; - - case 73: - $yych = $yyinput[$yycursor]; - // fall through - // no break - case 74: - switch ($yych) { - case "\x00": - $yystate = 69; - break 2; - case '\'': - $yycursor += 1; - $yystate = 70; - break 2; - case '\\': - $yycursor += 1; - $yystate = 75; - break 2; - default: - $yycursor += 1; - $yystate = 73; - break 2; - } - // no break - case 75: - $yych = $yyinput[$yycursor]; - switch ($yych) { - // An escape cannot consume the end-of-input sentinel. - case "\x00": - case "\n": - $yystate = 69; - break 2; - default: - $yycursor += 1; - $yystate = 73; - break 2; - } - // no break - case 76: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - $yycursor += 1; - $yystate = 76; - break 2; - default: - $yystate = 77; - break 2; - } - // no break - case 77: - $this->token = new Token(Opcode::DOUBLE, substr($yyinput, $q, $yycursor - $q), $yycursor - $q); - $q = $yycursor; - $this->state->setCursor($yycursor); - return ScannerStatus::OK; - - case 78: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'x': - $yycursor += 1; - $yystate = 78; - break 2; - default: - $yystate = 34; - break 2; - } - // no break - case 79: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '-': - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '_': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - $yycursor += 1; - $yystate = 79; - break 2; - case ':': - $yycursor += 1; - $yystate = 142; - break 2; - default: - $yystate = 69; - break 2; - } - // no break - case 80: - $this->token = new Token(Opcode::LESSEQUAL); - $this->state->setCursor($yycursor); - return ScannerStatus::OK; - case 81: - $this->token = new Token(Opcode::NOTEQUALS); - $this->state->setCursor($yycursor); - return ScannerStatus::OK; - case 82: - $this->token = new Token(Opcode::GREATEREQUAL); - $this->state->setCursor($yycursor); - return ScannerStatus::OK; - case 83: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - $yycursor += 1; - $yystate = 83; - break 2; - default: - $yystate = 84; - break 2; - } - // no break - case 84: - $this->token = new Token( - Opcode::NPLACEHOLDER, - substr($yyinput, $q, $yycursor - $q), - $yycursor - $q - ); - $q = $yycursor; - $this->state->setCursor($yycursor); - return ScannerStatus::OK; - case 85: - $this->token = new Token(Opcode::OP_CONTAINS); - $this->state->setCursor($yycursor); - return ScannerStatus::OK; - case 86: - $this->token = new Token(Opcode::OP_MATCHES); - $this->state->setCursor($yycursor); - return ScannerStatus::OK; - case 87: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'A': - case 'a': - $yycursor += 1; - $yystate = 143; - break 2; - default: - $yystate = 46; - break 2; - } - // no break - case 88: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'L': - case 'l': - $yycursor += 1; - $yystate = 144; - break 2; - default: - $yystate = 46; - break 2; - } - // no break - case 89: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'D': - case 'd': - $yycursor += 1; - $yystate = 146; - break 2; - default: - $yystate = 46; - break 2; - } - // no break - case 90: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case ':': - case 'A': - case 'B': - case 'D': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '\\': - case '_': - case 'a': - case 'b': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - $yycursor += 1; - $yystate = 45; - break 2; - case 'C': - case 'c': - $yycursor += 1; - $yystate = 148; - break 2; - default: - $yystate = 91; - break 2; - } - // no break - case 91: - $this->token = new Token(Opcode::AS); - $this->state->setCursor($yycursor); - return ScannerStatus::OK; - case 92: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'T': - case 't': - $yycursor += 1; - $yystate = 150; - break 2; - default: - $yystate = 60; - break 2; - } - // no break - case 93: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case ':': - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '\\': - case '_': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - $yycursor += 1; - $yystate = 45; - break 2; - default: - $yystate = 94; - break 2; - } - // no break - case 94: - $this->token = new Token(Opcode::BY); - $this->state->setCursor($yycursor); - return ScannerStatus::OK; - case 95: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'S': - case 's': - $yycursor += 1; - $yystate = 151; - break 2; - default: - $yystate = 60; - break 2; - } - // no break - case 96: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'N': - case 'n': - $yycursor += 1; - $yystate = 152; - break 2; - default: - $yystate = 46; - break 2; - } - // no break - case 97: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'O': - case 'o': - $yycursor += 1; - $yystate = 153; - break 2; - default: - $yystate = 46; - break 2; - } - // no break - case 98: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'L': - case 'l': - $yycursor += 1; - $yystate = 154; - break 2; - case 'S': - case 's': - $yycursor += 1; - $yystate = 155; - break 2; - default: - $yystate = 60; - break 2; - } - // no break - case 99: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'S': - case 's': - $yycursor += 1; - $yystate = 156; - break 2; - default: - $yystate = 46; - break 2; - } - // no break - case 100: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'S': - case 's': - $yycursor += 1; - $yystate = 157; - break 2; - default: - $yystate = 46; - break 2; - } - // no break - case 101: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'D': - case 'd': - $yycursor += 1; - $yystate = 158; - break 2; - default: - $yystate = 46; - break 2; - } - // no break - case 102: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'I': - case 'i': - $yycursor += 1; - $yystate = 160; - break 2; - default: - $yystate = 46; - break 2; - } - // no break - case 103: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'I': - case 'i': - $yycursor += 1; - $yystate = 160; - break 2; - default: - $yystate = 60; - break 2; - } - // no break - case 104: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'L': - case 'l': - $yycursor += 1; - $yystate = 161; - break 2; - default: - $yystate = 60; - break 2; - } - // no break - case 105: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'R': - case 'r': - $yycursor += 1; - $yystate = 162; - break 2; - default: - $yystate = 46; - break 2; - } - // no break - case 106: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'O': - case 'o': - $yycursor += 1; - $yystate = 164; - break 2; - default: - $yystate = 46; - break 2; - } - // no break - case 107: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'L': - case 'l': - $yycursor += 1; - $yystate = 165; - break 2; - default: - $yystate = 46; - break 2; - } - // no break - case 108: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'O': - case 'o': - $yycursor += 1; - $yystate = 166; - break 2; - default: - $yystate = 46; - break 2; - } - // no break - case 109: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'V': - case 'v': - $yycursor += 1; - $yystate = 167; - break 2; - default: - $yystate = 46; - break 2; - } - // no break - case 110: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'I': - case 'i': - $yycursor += 1; - $yystate = 168; - break 2; - default: - $yystate = 46; - break 2; - } - // no break - case 111: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case ':': - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '\\': - case '_': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'o': - case 'p': - case 'q': - case 'r': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - $yycursor += 1; - $yystate = 45; - break 2; - case 'N': - case 'n': - $yycursor += 1; - $yystate = 169; - break 2; - case 'S': - case 's': - $yycursor += 1; - $yystate = 170; - break 2; - case 'T': - case 't': - $yycursor += 1; - $yystate = 171; - break 2; - default: - $yystate = 112; - break 2; - } - // no break - case 112: - $this->token = new Token(Opcode::IN); - $this->state->setCursor($yycursor); - return ScannerStatus::OK; - - case 113: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case ':': - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '\\': - case '_': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - $yycursor += 1; - $yystate = 45; - break 2; - default: - $yystate = 114; - break 2; - } - // no break - case 114: - $this->token = new Token(Opcode::IS); - $this->state->setCursor($yycursor); - return ScannerStatus::OK; - - case 115: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'I': - case 'i': - $yycursor += 1; - $yystate = 172; - break 2; - default: - $yystate = 46; - break 2; - } - // no break - case 116: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'F': - case 'f': - $yycursor += 1; - $yystate = 173; - break 2; - default: - $yystate = 46; - break 2; - } - // no break - case 117: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'K': - case 'k': - $yycursor += 1; - $yystate = 174; - break 2; - case 'M': - case 'm': - $yycursor += 1; - $yystate = 175; - break 2; - default: - $yystate = 46; - break 2; - } - // no break - case 118: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'T': - case 't': - $yycursor += 1; - $yystate = 176; - break 2; - default: - $yystate = 46; - break 2; - } - // no break - case 119: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'L': - case 'l': - $yycursor += 1; - $yystate = 178; - break 2; - default: - $yystate = 46; - break 2; - } - // no break - case 120: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'F': - case 'f': - $yycursor += 1; - $yystate = 179; - break 2; - default: - $yystate = 46; - break 2; - } - // no break - case 121: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case ':': - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '\\': - case '_': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - $yycursor += 1; - $yystate = 45; - break 2; - default: - $yystate = 122; - break 2; - } - // no break - case 122: - $this->token = new Token(Opcode::ON); - $this->state->setCursor($yycursor); - return ScannerStatus::OK; - - case 123: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case ':': - case 'A': - case 'B': - case 'C': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '\\': - case '_': - case 'a': - case 'b': - case 'c': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - $yycursor += 1; - $yystate = 45; - break 2; - case 'D': - case 'd': - $yycursor += 1; - $yystate = 180; - break 2; - default: - $yystate = 124; - break 2; - } - // no break - case 124: - $this->token = new Token(Opcode::OR); - $this->state->setCursor($yycursor); - return ScannerStatus::OK; - - case 125: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'T': - case 't': - $yycursor += 1; - $yystate = 181; - break 2; - default: - $yystate = 46; - break 2; - } - // no break - case 126: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'G': - case 'g': - $yycursor += 1; - $yystate = 182; - break 2; - default: - $yystate = 46; - break 2; - } - // no break - case 127: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'L': - case 'l': - $yycursor += 1; - $yystate = 183; - break 2; - case 'T': - case 't': - $yycursor += 1; - $yystate = 184; - break 2; - default: - $yystate = 46; - break 2; - } - // no break - case 128: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'E': - case 'e': - $yycursor += 1; - $yystate = 186; - break 2; - default: - $yystate = 46; - break 2; - } - // no break - case 129: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'U': - case 'u': - $yycursor += 1; - $yystate = 187; - break 2; - default: - $yystate = 46; - break 2; - } - // no break - case 130: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'D': - case 'd': - $yycursor += 1; - $yystate = 188; - break 2; - default: - $yystate = 46; - break 2; - } - // no break - case 131: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'I': - case 'i': - $yycursor += 1; - $yystate = 189; - break 2; - default: - $yystate = 46; - break 2; - } - // no break - case 132: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'L': - case 'l': - $yycursor += 1; - $yystate = 190; - break 2; - default: - $yystate = 46; - break 2; - } - // no break - case 133: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'E': - case 'e': - $yycursor += 1; - $yystate = 191; - break 2; - default: - $yystate = 46; - break 2; - } - // no break - case 134: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'T': - case 't': - $yycursor += 1; - $yystate = 192; - break 2; - default: - $yystate = 46; - break 2; - } - // no break - case 135: - $yych = $yyinput[$yycursor]; - // fall through - // no break - case 136: - switch ($yych) { - case "\x00": - case "\x01": - case "\x02": - case "\x03": - case "\x04": - case "\x05": - case "\x06": - case "\x07": - case "\x08": - case "\t": - case "\n": - case "\v": - case "\f": - case "\r": - case 0x0E: - case 0x0F: - case 0x10: - case 0x11: - case 0x12: - case 0x13: - case 0x14: - case 0x15: - case 0x16: - case 0x17: - case 0x18: - case 0x19: - case 0x1A: - case 0x1B: - case 0x1C: - case 0x1D: - case 0x1E: - case 0x1F: - case '[': - case 0x7F: - $yystate = 69; - break 2; - case '\\': - $yycursor += 1; - $yystate = 137; - break 2; - case ']': - $yycursor += 1; - $yystate = 138; - break 2; - default: - $yycursor += 1; - $yystate = 135; - break 2; - } - // no break - case 137: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case "\x00": - case "\x01": - case "\x02": - case "\x03": - case "\x04": - case "\x05": - case "\x06": - case "\x07": - case "\x08": - case "\t": - case "\n": - case "\v": - case "\f": - case "\r": - case 0x0E: - case 0x0F: - case 0x10: - case 0x11: - case 0x12: - case 0x13: - case 0x14: - case 0x15: - case 0x16: - case 0x17: - case 0x18: - case 0x19: - case 0x1A: - case 0x1B: - case 0x1C: - case 0x1D: - case 0x1E: - case 0x1F: - case 0x7F: - $yystate = 69; - break 2; - case '\\': - $yycursor += 1; - $yystate = 137; - break 2; - case ']': - $yycursor += 1; - $yystate = 193; - break 2; - default: - $yycursor += 1; - $yystate = 135; - break 2; - } - // no break - case 138: - // Bracket-enclosed identifier: [name] or [First Name]. - // Use $q (the opening '['); $yymarker is moved by escaped-bracket - // states (e.g. 193 after '\]'), which corrupts the value. - $this->token = new Token( - Opcode::IDENTIFIER, - substr($yyinput, $q + 1, $yycursor - $q - 2), - $yycursor - $q - 2 - ); - $q = $yycursor; - $this->state->setCursor($yycursor); - return ScannerStatus::OK; - case 139: - $this->token = new Token( - Opcode::IDENTIFIER, - substr($yyinput, $q, $yycursor - $q), - $yycursor - $q - ); - $q = $yycursor; - $this->state->setCursor($yycursor); - return ScannerStatus::OK; - - case 140: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '-': - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case ':': - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '_': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - $yycursor += 1; - $yystate = 140; - break 2; - case '}': - $yycursor += 1; - $yystate = 194; - break 2; - default: - $yystate = 69; - break 2; - } - // no break - case 141: - $this->token = new Token(Opcode::OP_CONCAT); - $this->state->setCursor($yycursor); - return ScannerStatus::OK; - - case 142: - // Strip leading ':' — Query.php prepends ':' when building the placeholder - $this->token = new Token( - Opcode::SPLACEHOLDER, - substr($yyinput, $q + 1, $yycursor - $q - 2), - $yycursor - $q - 2 - ); - $q = $yycursor; - $this->state->setCursor($yycursor); - return ScannerStatus::OK; - - case 143: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'I': - case 'i': - $yycursor += 1; - $yystate = 195; - break 2; - default: - $yystate = 46; - break 2; - } - // no break - case 144: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case ':': - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '\\': - case '_': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - $yycursor += 1; - $yystate = 45; - break 2; - default: - $yystate = 145; - break 2; - } - // no break - case 145: - $this->token = new Token(Opcode::ALL); - $this->state->setCursor($yycursor); - return ScannerStatus::OK; - - case 146: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case ':': - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '\\': - case '_': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - $yycursor += 1; - $yystate = 45; - break 2; - default: - $yystate = 147; - break 2; - } - // no break - case 147: - $this->token = new Token(Opcode::AND); - $this->state->setCursor($yycursor); - return ScannerStatus::OK; - - case 148: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case ':': - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '\\': - case '_': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - $yycursor += 1; - $yystate = 45; - break 2; - default: - $yystate = 149; - break 2; - } - // no break - case 149: - $this->token = new Token(Opcode::ASC); - $this->state->setCursor($yycursor); - return ScannerStatus::OK; - - case 150: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'W': - case 'w': - $yycursor += 1; - $yystate = 196; - break 2; - default: - $yystate = 46; - break 2; - } - // no break - case 151: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'E': - case 'e': - $yycursor += 1; - $yystate = 197; - break 2; - case 'T': - case 't': - $yycursor += 1; - $yystate = 199; - break 2; - default: - $yystate = 46; - break 2; - } - // no break - case 152: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'V': - case 'v': - $yycursor += 1; - $yystate = 201; - break 2; - default: - $yystate = 46; - break 2; - } - // no break - case 153: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'S': - case 's': - $yycursor += 1; - $yystate = 202; - break 2; - default: - $yystate = 46; - break 2; - } - // no break - case 154: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'E': - case 'e': - $yycursor += 1; - $yystate = 203; - break 2; - default: - $yystate = 46; - break 2; - } - // no break - case 155: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'C': - case 'c': - $yycursor += 1; - $yystate = 204; - break 2; - default: - $yystate = 46; - break 2; - } - // no break - case 156: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'T': - case 't': - $yycursor += 1; - $yystate = 206; - break 2; - default: - $yystate = 46; - break 2; - } - // no break - case 157: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'E': - case 'e': - $yycursor += 1; - $yystate = 207; - break 2; - default: - $yystate = 46; - break 2; - } - // no break - case 158: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case ':': - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '\\': - case '_': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - $yycursor += 1; - $yystate = 45; - break 2; - default: - $yystate = 159; - break 2; - } - // no break - case 159: - $this->token = new Token(Opcode::END); - $this->state->setCursor($yycursor); - return ScannerStatus::OK; - - case 160: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'S': - case 's': - $yycursor += 1; - $yystate = 209; - break 2; - default: - $yystate = 46; - break 2; - } - // no break - case 161: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'S': - case 's': - $yycursor += 1; - $yystate = 210; - break 2; - default: - $yystate = 46; - break 2; - } - // no break - case 162: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case ':': - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '\\': - case '_': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - $yycursor += 1; - $yystate = 45; - break 2; - default: - $yystate = 163; - break 2; - } - // no break - case 163: - $this->token = new Token(Opcode::FOR); - $this->state->setCursor($yycursor); - return ScannerStatus::OK; - - case 164: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'M': - case 'm': - $yycursor += 1; - $yystate = 211; - break 2; - default: - $yystate = 46; - break 2; - } - // no break - case 165: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'L': - case 'l': - $yycursor += 1; - $yystate = 213; - break 2; - default: - $yystate = 46; - break 2; - } - // no break - case 166: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'U': - case 'u': - $yycursor += 1; - $yystate = 215; - break 2; - default: - $yystate = 46; - break 2; - } - // no break - case 167: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'I': - case 'i': - $yycursor += 1; - $yystate = 216; - break 2; - default: - $yystate = 46; - break 2; - } - // no break - case 168: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'K': - case 'k': - $yycursor += 1; - $yystate = 217; - break 2; - default: - $yystate = 46; - break 2; - } - // no break - case 169: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'E': - case 'e': - $yycursor += 1; - $yystate = 218; - break 2; - default: - $yystate = 46; - break 2; - } - // no break - case 170: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'E': - case 'e': - $yycursor += 1; - $yystate = 219; - break 2; - default: - $yystate = 46; - break 2; - } - // no break - case 171: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'O': - case 'o': - $yycursor += 1; - $yystate = 220; - break 2; - default: - $yystate = 46; - break 2; - } - // no break - case 172: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'N': - case 'n': - $yycursor += 1; - $yystate = 222; - break 2; - default: - $yystate = 46; - break 2; - } - // no break - case 173: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'T': - case 't': - $yycursor += 1; - $yystate = 224; - break 2; - default: - $yystate = 46; - break 2; - } - // no break - case 174: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'E': - case 'e': - $yycursor += 1; - $yystate = 226; - break 2; - default: - $yystate = 46; - break 2; - } - // no break - case 175: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'I': - case 'i': - $yycursor += 1; - $yystate = 228; - break 2; - default: - $yystate = 46; - break 2; - } - // no break - case 176: - $yyaccept = 2; - $yymarker = $yycursor; - $yych = $yyinput[$yycursor]; - switch ($yych) { - case ' ': - $yycursor += 1; - $yystate = 229; - break 2; - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case ':': - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '\\': - case '_': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - $yycursor += 1; - $yystate = 45; - break 2; - default: - $yystate = 177; - break 2; - } - // no break - case 177: - $this->token = new Token(Opcode::NOT); - $this->state->setCursor($yycursor); - return ScannerStatus::OK; - - case 178: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'L': - case 'l': - $yycursor += 1; - $yystate = 230; - break 2; - default: - $yystate = 46; - break 2; - } - // no break - case 179: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'S': - case 's': - $yycursor += 1; - $yystate = 232; - break 2; - default: - $yystate = 46; - break 2; - } - // no break - case 180: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'E': - case 'e': - $yycursor += 1; - $yystate = 233; - break 2; - default: - $yystate = 46; - break 2; - } - // no break - case 181: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'E': - case 'e': - $yycursor += 1; - $yystate = 234; - break 2; - default: - $yystate = 46; - break 2; - } - // no break - case 182: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'H': - case 'h': - $yycursor += 1; - $yystate = 235; - break 2; - default: - $yystate = 46; - break 2; - } - // no break - case 183: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'E': - case 'e': - $yycursor += 1; - $yystate = 236; - break 2; - default: - $yystate = 46; - break 2; - } - // no break - case 184: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case ':': - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '\\': - case '_': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - $yycursor += 1; - $yystate = 45; - break 2; - default: - $yystate = 185; - break 2; - } - // no break - case 185: - $this->token = new Token(Opcode::SET); - $this->state->setCursor($yycursor); - return ScannerStatus::OK; - - case 186: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'N': - case 'n': - $yycursor += 1; - $yystate = 237; - break 2; - default: - $yystate = 46; - break 2; - } - // no break - case 187: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'E': - case 'e': - $yycursor += 1; - $yystate = 239; - break 2; - default: - $yystate = 46; - break 2; - } - // no break - case 188: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'A': - case 'a': - $yycursor += 1; - $yystate = 241; - break 2; - default: - $yystate = 46; - break 2; - } - // no break - case 189: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'N': - case 'n': - $yycursor += 1; - $yystate = 242; - break 2; - default: - $yystate = 46; - break 2; - } - // no break - case 190: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'U': - case 'u': - $yycursor += 1; - $yystate = 243; - break 2; - default: - $yystate = 46; - break 2; - } - // no break - case 191: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'N': - case 'n': - $yycursor += 1; - $yystate = 244; - break 2; - case 'R': - case 'r': - $yycursor += 1; - $yystate = 246; - break 2; - default: - $yystate = 46; - break 2; - } - // no break - case 192: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'H': - case 'h': - $yycursor += 1; - $yystate = 247; - break 2; - default: - $yystate = 46; - break 2; - } - // no break - case 193: - $yyaccept = 3; - $yymarker = $yycursor; - $yych = $yyinput[$yycursor]; - switch ($yych) { - case "\x00": - case "\x01": - case "\x02": - case "\x03": - case "\x04": - case "\x05": - case "\x06": - case "\x07": - case "\x08": - case "\t": - case "\n": - case "\v": - case "\f": - case "\r": - case 0x0E: - case 0x0F: - case 0x10: - case 0x11: - case 0x12: - case 0x13: - case 0x14: - case 0x15: - case 0x16: - case 0x17: - case 0x18: - case 0x19: - case 0x1A: - case 0x1B: - case 0x1C: - case 0x1D: - case 0x1E: - case 0x1F: - case '[': - case 0x7F: - $yystate = 139; - break 2; - case '\\': - $yycursor += 1; - $yystate = 137; - break 2; - case ']': - $yycursor += 1; - $yystate = 138; - break 2; - default: - $yycursor += 1; - $yystate = 135; - break 2; - } - // no break - case 194: - // Strip leading ':' — Query.php handles the ':' prefix separately - $this->token = new Token( - Opcode::BPLACEHOLDER, - substr($yyinput, $q + 1, $yycursor - $q - 2), - $yycursor - $q - 2 - ); - $q = $yycursor; - $this->state->setCursor($yycursor); - return ScannerStatus::OK; - - case 195: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'N': - case 'n': - $yycursor += 1; - $yystate = 249; - break 2; - default: - $yystate = 46; - break 2; - } - // no break - case 196: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'E': - case 'e': - $yycursor += 1; - $yystate = 250; - break 2; - default: - $yystate = 46; - break 2; - } - // no break - case 197: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case ':': - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '\\': - case '_': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - $yycursor += 1; - $yystate = 45; - break 2; - default: - $yystate = 198; - break 2; - } - // no break - case 198: - $this->token = new Token(Opcode::CASE); - $this->state->setCursor($yycursor); - return ScannerStatus::OK; - - case 199: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case ':': - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '\\': - case '_': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - $yycursor += 1; - $yystate = 45; - break 2; - default: - $yystate = 200; - break 2; - } - // no break - case 200: - $this->token = new Token(Opcode::CAST); - $this->state->setCursor($yycursor); - return ScannerStatus::OK; - - case 201: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'E': - case 'e': - $yycursor += 1; - $yystate = 251; - break 2; - default: - $yystate = 46; - break 2; - } - // no break - case 202: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'S': - case 's': - $yycursor += 1; - $yystate = 252; - break 2; - default: - $yystate = 46; - break 2; - } - // no break - case 203: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'T': - case 't': - $yycursor += 1; - $yystate = 254; - break 2; - default: - $yystate = 46; - break 2; - } - // no break - case 204: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case ':': - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '\\': - case '_': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - $yycursor += 1; - $yystate = 45; - break 2; - default: - $yystate = 205; - break 2; - } - // no break - case 205: - $this->token = new Token(Opcode::DESC); - $this->state->setCursor($yycursor); - return ScannerStatus::OK; - - case 206: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'I': - case 'i': - $yycursor += 1; - $yystate = 255; - break 2; - default: - $yystate = 46; - break 2; - } - // no break - case 207: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case ':': - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '\\': - case '_': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - $yycursor += 1; - $yystate = 45; - break 2; - default: - $yystate = 208; - break 2; - } - // no break - case 208: - $this->token = new Token(Opcode::ELSE); - $this->state->setCursor($yycursor); - return ScannerStatus::OK; - - case 209: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'T': - case 't': - $yycursor += 1; - $yystate = 256; - break 2; - default: - $yystate = 46; - break 2; - } - // no break - case 210: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'E': - case 'e': - $yycursor += 1; - $yystate = 257; - break 2; - default: - $yystate = 46; - break 2; - } - // no break - case 211: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case ':': - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '\\': - case '_': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - $yycursor += 1; - $yystate = 45; - break 2; - default: - $yystate = 212; - break 2; - } - // no break - case 212: - $this->token = new Token(Opcode::FROM); - $this->state->setCursor($yycursor); - return ScannerStatus::OK; - - case 213: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case ':': - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '\\': - case '_': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - $yycursor += 1; - $yystate = 45; - break 2; - default: - $yystate = 214; - break 2; - } - // no break - case 214: - $this->token = new Token(Opcode::FULL); - $this->state->setCursor($yycursor); - return ScannerStatus::OK; - - case 215: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'P': - case 'p': - $yycursor += 1; - $yystate = 259; - break 2; - default: - $yystate = 46; - break 2; - } - // no break - case 216: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'N': - case 'n': - $yycursor += 1; - $yystate = 261; - break 2; - default: - $yystate = 46; - break 2; - } - // no break - case 217: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'E': - case 'e': - $yycursor += 1; - $yystate = 262; - break 2; - default: - $yystate = 46; - break 2; - } - // no break - case 218: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'R': - case 'r': - $yycursor += 1; - $yystate = 264; - break 2; - default: - $yystate = 46; - break 2; - } - // no break - case 219: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'R': - case 'r': - $yycursor += 1; - $yystate = 266; - break 2; - default: - $yystate = 46; - break 2; - } - // no break - case 220: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case ':': - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '\\': - case '_': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - $yycursor += 1; - $yystate = 45; - break 2; - default: - $yystate = 221; - break 2; - } - // no break - case 221: - $this->token = new Token(Opcode::INTO); - $this->state->setCursor($yycursor); - return ScannerStatus::OK; - - case 222: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case ':': - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '\\': - case '_': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - $yycursor += 1; - $yystate = 45; - break 2; - default: - $yystate = 223; - break 2; - } - // no break - case 223: - $this->token = new Token(Opcode::JOIN); - $this->state->setCursor($yycursor); - return ScannerStatus::OK; - - case 224: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case ':': - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '\\': - case '_': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - $yycursor += 1; - $yystate = 45; - break 2; - default: - $yystate = 225; - break 2; - } - // no break - case 225: - $this->token = new Token(Opcode::LEFT); - $this->state->setCursor($yycursor); - return ScannerStatus::OK; + $char = $this->phql[$at]; + + return match (true) { + $char === ' ' || $char === "\t" || $char === "\n" || $char === "\r" => $this->emit( + Opcode::IGNORE, + strspn($this->phql, " \t\n\r", $at) + ), + $char >= '0' && $char <= '9' => $this->scanNumber($at), + ($char >= 'a' && $char <= 'z') || ($char >= 'A' && $char <= 'Z') || $char === '_' + => $this->scanWord($at), + $char === '\\' => $this->scanQualifiedWord($at), + $char === "'" || $char === '"' => $this->scanString($at, $char), + $char === '[' => $this->scanBracketed($at), + $char === '?' => $this->scanNumberedPlaceholder($at), + $char === ':' => $this->scanStringPlaceholder($at), + $char === '{' => $this->scanBoundPlaceholder($at), + $char === '.' => $this->scanDot($at), + default => $this->scanOperator($at, $char), + }; + } - case 226: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case ':': - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '\\': - case '_': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - $yycursor += 1; - $yystate = 45; - break 2; - default: - $yystate = 227; - break 2; - } - // no break - case 227: - $this->token = new Token(Opcode::LIKE); - $this->state->setCursor($yycursor); - return ScannerStatus::OK; + private function emit(Opcode $opcode, int $length, ?string $value = null): Token + { + $this->cursor += $length; - case 228: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'T': - case 't': - $yycursor += 1; - $yystate = 267; - break 2; - default: - $yystate = 46; - break 2; - } - // no break - case 229: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'B': - case 'b': - $yycursor += 1; - $yystate = 269; - break 2; - default: - $yystate = 69; - break 2; - } - // no break - case 230: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case ':': - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '\\': - case '_': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - $yycursor += 1; - $yystate = 45; - break 2; - default: - $yystate = 231; - break 2; - } - // no break - case 231: - $this->token = new Token(Opcode::NULL); - $this->state->setCursor($yycursor); - return ScannerStatus::OK; + return new Token($opcode->value, $value); + } - case 232: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'E': - case 'e': - $yycursor += 1; - $yystate = 270; - break 2; - default: - $yystate = 46; - break 2; - } - // no break - case 233: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'R': - case 'r': - $yycursor += 1; - $yystate = 271; - break 2; - default: - $yystate = 46; - break 2; - } - // no break - case 234: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'R': - case 'r': - $yycursor += 1; - $yystate = 273; - break 2; - default: - $yystate = 46; - break 2; - } - // no break - case 235: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'T': - case 't': - $yycursor += 1; - $yystate = 275; - break 2; - default: - $yystate = 46; - break 2; - } - // no break - case 236: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'C': - case 'c': - $yycursor += 1; - $yystate = 277; - break 2; - default: - $yystate = 46; - break 2; - } - // no break - case 237: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case ':': - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '\\': - case '_': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - $yycursor += 1; - $yystate = 45; - break 2; - default: - $yystate = 238; - break 2; - } - // no break - case 238: - $this->token = new Token(Opcode::THEN); - $this->state->setCursor($yycursor); - return ScannerStatus::OK; + private function error(): Token + { + $this->cursor++; - case 239: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case ':': - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '\\': - case '_': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - $yycursor += 1; - $yystate = 45; - break 2; - default: - $yystate = 240; - break 2; - } - // no break - case 240: - $this->token = new Token(Opcode::TRUE); - $this->state->setCursor($yycursor); - return ScannerStatus::OK; + return new Token(Token::SCAN_ERROR); + } - case 241: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'T': - case 't': - $yycursor += 1; - $yystate = 278; - break 2; - default: - $yystate = 46; - break 2; - } - // no break - case 242: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'G': - case 'g': - $yycursor += 1; - $yystate = 279; - break 2; - default: - $yystate = 46; - break 2; - } - // no break - case 243: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'E': - case 'e': - $yycursor += 1; - $yystate = 281; - break 2; - default: - $yystate = 46; - break 2; - } - // no break - case 244: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case ':': - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '\\': - case '_': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - $yycursor += 1; - $yystate = 45; - break 2; - default: - $yystate = 245; - break 2; - } - // no break - case 245: - $this->token = new Token(Opcode::WHEN); - $this->state->setCursor($yycursor); - return ScannerStatus::OK; + /** + * BPLACEHOLDER = "{"[a-zA-Z0-9_:\-]+"}" + */ + private function scanBoundPlaceholder(int $at): Token + { + $name = strspn($this->phql, self::BPLACEHOLDER_NAME, $at + 1); + if ($name === 0 || ($this->phql[$at + 1 + $name] ?? '') !== '}') { + return $this->error(); + } - case 246: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'E': - case 'e': - $yycursor += 1; - $yystate = 282; - break 2; - default: - $yystate = 46; - break 2; - } - // no break - case 247: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case ':': - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '\\': - case '_': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - $yycursor += 1; - $yystate = 45; - break 2; - default: - $yystate = 248; - break 2; - } - // no break - case 248: - $this->token = new Token(Opcode::WITH); - $this->state->setCursor($yycursor); - return ScannerStatus::OK; + return $this->emit(Opcode::BPLACEHOLDER, $name + 2, substr($this->phql, $at + 1, $name)); + } - case 249: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'S': - case 's': - $yycursor += 1; - $yystate = 284; - break 2; - default: - $yystate = 46; - break 2; - } - // no break - case 250: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'E': - case 'e': - $yycursor += 1; - $yystate = 285; - break 2; - default: - $yystate = 46; - break 2; - } - // no break - case 251: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'R': - case 'r': - $yycursor += 1; - $yystate = 286; - break 2; - default: - $yystate = 46; - break 2; - } - // no break - case 252: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case ':': - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '\\': - case '_': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - $yycursor += 1; - $yystate = 45; - break 2; - default: - $yystate = 253; - break 2; - } - // no break - case 253: - $this->token = new Token(Opcode::CROSS); - $this->state->setCursor($yycursor); - return ScannerStatus::OK; + /** + * EIDENTIFIER = '[' ([\\][\[]|[\\][\]]|PRINTABLE\[\[\]])* ']' + * + * The longest match ends at the last `]` that can close it: an unescaped + * `]` is always the last candidate, an escaped one (`\]`) may also close + * the identifier with the backslash as plain content. An unescaped `[` or + * a control byte ends the search. + */ + private function scanBracketed(int $at): Token + { + $close = null; + $end = $this->end; - case 254: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'E': - case 'e': - $yycursor += 1; - $yystate = 287; - break 2; - default: - $yystate = 46; - break 2; - } - // no break - case 255: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'N': - case 'n': - $yycursor += 1; - $yystate = 289; - break 2; - default: - $yystate = 46; - break 2; - } - // no break - case 256: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'S': - case 's': - $yycursor += 1; - $yystate = 290; - break 2; - default: - $yystate = 46; - break 2; - } - // no break - case 257: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case ':': - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '\\': - case '_': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - $yycursor += 1; - $yystate = 45; - break 2; - default: - $yystate = 258; - break 2; - } - // no break - case 258: - $this->token = new Token(Opcode::FALSE); - $this->state->setCursor($yycursor); - return ScannerStatus::OK; + for ($i = $at + 1; $i < $end; $i++) { + $byte = ord($this->phql[$i]); + if ($byte < 0x20 || $byte === 0x7F) { + break; + } - case 259: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case ':': - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '\\': - case '_': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - $yycursor += 1; - $yystate = 45; - break 2; - default: - $yystate = 260; - break 2; - } - // no break - case 260: - $this->token = new Token(Opcode::GROUP); - $this->state->setCursor($yycursor); - return ScannerStatus::OK; + $escaped = $this->phql[$i - 1] === '\\'; + if ($byte === 0x5B && !$escaped) { + break; + } - case 261: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'G': - case 'g': - $yycursor += 1; - $yystate = 292; - break 2; - default: - $yystate = 46; - break 2; - } - // no break - case 262: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case ':': - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '\\': - case '_': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - $yycursor += 1; - $yystate = 45; - break 2; - default: - $yystate = 263; - break 2; - } - // no break - case 263: - $this->token = new Token(Opcode::ILIKE); - $this->state->setCursor($yycursor); - return ScannerStatus::OK; + if ($byte === 0x5D) { + $close = $i; + if (!$escaped) { + break; + } + } + } - case 264: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case ':': - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '\\': - case '_': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - $yycursor += 1; - $yystate = 45; - break 2; - default: - $yystate = 265; - break 2; - } - // no break - case 265: - $this->token = new Token(Opcode::INNER); - $this->state->setCursor($yycursor); - return ScannerStatus::OK; + if ($close === null) { + return $this->error(); + } - case 266: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'T': - case 't': - $yycursor += 1; - $yystate = 294; - break 2; - default: - $yystate = 46; - break 2; - } - // no break - case 267: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case ':': - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '\\': - case '_': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - $yycursor += 1; - $yystate = 45; - break 2; - default: - $yystate = 268; - break 2; - } - // no break - case 268: - $this->token = new Token(Opcode::LIMIT); - $this->state->setCursor($yycursor); - return ScannerStatus::OK; + return $this->emit(Opcode::IDENTIFIER, $close - $at + 1, substr($this->phql, $at + 1, $close - $at - 1)); + } - case 269: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'E': - case 'e': - $yycursor += 1; - $yystate = 296; - break 2; - default: - $yystate = 69; - break 2; - } - // no break - case 270: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'T': - case 't': - $yycursor += 1; - $yystate = 297; - break 2; - default: - $yystate = 46; - break 2; - } - // no break - case 271: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case ':': - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '\\': - case '_': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - $yycursor += 1; - $yystate = 45; - break 2; - default: - $yystate = 272; - break 2; - } - // no break - case 272: - $this->token = new Token(Opcode::ORDER); - $this->state->setCursor($yycursor); - return ScannerStatus::OK; + /** + * `.` is DOT unless a digit follows: DOUBLE = [0-9]*[.][0-9]+ + */ + private function scanDot(int $at): Token + { + $digits = strspn($this->phql, self::DIGITS, $at + 1); + if ($digits === 0) { + return $this->emit(Opcode::DOT, 1); + } - case 273: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case ':': - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '\\': - case '_': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - $yycursor += 1; - $yystate = 45; - break 2; - default: - $yystate = 274; - break 2; - } - // no break - case 274: - $this->token = new Token(Opcode::OUTER); - $this->state->setCursor($yycursor); - return ScannerStatus::OK; + return $this->emit(Opcode::DOUBLE, 1 + $digits, substr($this->phql, $at, 1 + $digits)); + } - case 275: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case ':': - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '\\': - case '_': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - $yycursor += 1; - $yystate = 45; - break 2; - default: - $yystate = 276; - break 2; - } - // no break - case 276: - $this->token = new Token(Opcode::RIGHT); - $this->state->setCursor($yycursor); - return ScannerStatus::OK; + /** + * INTEGER = [0-9]+, HINTEGER = [x0-9A-Fa-f]+ and DOUBLE from a digit. + * + * A run of hex characters longer than the digits is HINTEGER's match: + * cphalcon keeps it as HINTEGER only when it starts with `0x` and is + * longer than 2, and otherwise makes it an IDENTIFIER (`1abc`, `0x`). + */ + private function scanNumber(int $at): Token + { + $digits = strspn($this->phql, self::DIGITS, $at); - case 277: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'T': - case 't': - $yycursor += 1; - $yystate = 299; - break 2; - default: - $yystate = 46; - break 2; - } - // no break - case 278: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'E': - case 'e': - $yycursor += 1; - $yystate = 301; - break 2; - default: - $yystate = 46; - break 2; - } - // no break - case 279: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case ':': - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '\\': - case '_': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - $yycursor += 1; - $yystate = 45; - break 2; - default: - $yystate = 280; - break 2; - } - // no break - case 280: - $this->token = new Token(Opcode::USING); - $this->state->setCursor($yycursor); - return ScannerStatus::OK; + if (($this->phql[$at + $digits] ?? '') === '.') { + $length = $digits + 1 + strspn($this->phql, self::DIGITS, $at + $digits + 1); - case 281: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'S': - case 's': - $yycursor += 1; - $yystate = 303; - break 2; - default: - $yystate = 46; - break 2; - } - // no break - case 282: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case ':': - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '\\': - case '_': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - $yycursor += 1; - $yystate = 45; - break 2; - default: - $yystate = 283; - break 2; - } - // no break - case 283: - $this->token = new Token(Opcode::WHERE); - $this->state->setCursor($yycursor); - return ScannerStatus::OK; + return $this->emit(Opcode::DOUBLE, $length, substr($this->phql, $at, $length)); + } - case 284: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'T': - case 't': - $yycursor += 1; - $yystate = 305; - break 2; - default: - $yystate = 46; - break 2; - } - // no break - case 285: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'N': - case 'n': - $yycursor += 1; - $yystate = 307; - break 2; - default: - $yystate = 46; - break 2; - } - // no break - case 286: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'T': - case 't': - $yycursor += 1; - $yystate = 309; - break 2; - default: - $yystate = 46; - break 2; - } - // no break - case 287: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case ':': - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '\\': - case '_': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - $yycursor += 1; - $yystate = 45; - break 2; - default: - $yystate = 288; - break 2; - } - // no break - case 288: - $this->token = new Token(Opcode::DELETE); - $this->state->setCursor($yycursor); - return ScannerStatus::OK; + $hex = strspn($this->phql, self::HEX, $at); + if ($hex === $digits) { + return $this->emit(Opcode::INTEGER, $digits, substr($this->phql, $at, $digits)); + } - case 289: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'C': - case 'c': - $yycursor += 1; - $yystate = 311; - break 2; - default: - $yystate = 46; - break 2; - } - // no break - case 290: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case ':': - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '\\': - case '_': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - $yycursor += 1; - $yystate = 45; - break 2; - default: - $yystate = 291; - break 2; - } - // no break - case 291: - $this->token = new Token(Opcode::EXISTS); - $this->state->setCursor($yycursor); - return ScannerStatus::OK; + $value = substr($this->phql, $at, $hex); + $opcode = $hex > 2 && $value[0] === '0' && $value[1] === 'x' ? Opcode::HINTEGER : Opcode::IDENTIFIER; - case 292: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case ':': - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '\\': - case '_': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - $yycursor += 1; - $yystate = 45; - break 2; - default: - $yystate = 293; - break 2; - } - // no break - case 293: - $this->token = new Token(Opcode::HAVING); - $this->state->setCursor($yycursor); - return ScannerStatus::OK; + return $this->emit($opcode, $hex, $value); + } - case 294: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case ':': - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '\\': - case '_': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - $yycursor += 1; - $yystate = 45; - break 2; - default: - $yystate = 295; - break 2; - } - // no break - case 295: - $this->token = new Token(Opcode::INSERT); - $this->state->setCursor($yycursor); - return ScannerStatus::OK; + /** + * NPLACEHOLDER = "?"[0-9]+ (the value keeps the `?`) + */ + private function scanNumberedPlaceholder(int $at): Token + { + $digits = strspn($this->phql, self::DIGITS, $at + 1); + if ($digits === 0) { + return $this->error(); + } - case 296: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'T': - case 't': - $yycursor += 1; - $yystate = 312; - break 2; - default: - $yystate = 69; - break 2; - } - // no break - case 297: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case ':': - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '\\': - case '_': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - $yycursor += 1; - $yystate = 45; - break 2; - default: - $yystate = 298; - break 2; - } - // no break - case 298: - $this->token = new Token(Opcode::OFFSET); - $this->state->setCursor($yycursor); - return ScannerStatus::OK; + return $this->emit(Opcode::NPLACEHOLDER, $digits + 1, substr($this->phql, $at, $digits + 1)); + } - case 299: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case ':': - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '\\': - case '_': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - $yycursor += 1; - $yystate = 45; - break 2; - default: - $yystate = 300; - break 2; - } - // no break - case 300: - $this->token = new Token(Opcode::SELECT); - $this->state->setCursor($yycursor); - return ScannerStatus::OK; + /** + * Operators, longest first. `#` and `@` start no single-byte operator, + * and every byte not listed matches no rule. + */ + private function scanOperator(int $at, string $char): Token + { + $next = $this->phql[$at + 1] ?? ''; + + return match ($char) { + '+' => $this->emit(Opcode::ADD, 1), + '*' => $this->emit(Opcode::MUL, 1), + '/' => $this->emit(Opcode::DIV, 1), + '%' => $this->emit(Opcode::MOD, 1), + ',' => $this->emit(Opcode::COMMA, 1), + '(' => $this->emit(Opcode::PARENTHESES_OPEN, 1), + ')' => $this->emit(Opcode::PARENTHESES_CLOSE, 1), + '=' => $this->emit(Opcode::EQUALS, 1), + '~' => $this->emit(Opcode::BITWISE_NOT, 1), + '^' => $this->emit(Opcode::BITWISE_XOR, 1), + '-' => match (true) { + $next === '>' && ($this->phql[$at + 2] ?? '') === '>' => $this->emit(Opcode::OP_JSON_GET_TEXT, 3), + $next === '>' => $this->emit(Opcode::OP_JSON_GET, 2), + default => $this->emit(Opcode::SUB, 1), + }, + '#' => match (true) { + $next === '>' && ($this->phql[$at + 2] ?? '') === '>' => $this->emit(Opcode::OP_JSON_PATH_TEXT, 3), + $next === '>' => $this->emit(Opcode::OP_JSON_PATH, 2), + default => $this->error(), + }, + '@' => match ($next) { + '@' => $this->emit(Opcode::OP_MATCHES, 2), + '>' => $this->emit(Opcode::OP_CONTAINS, 2), + default => $this->error(), + }, + '<' => match ($next) { + '>' => $this->emit(Opcode::NOTEQUALS, 2), + '=' => $this->emit(Opcode::LESSEQUAL, 2), + '@' => $this->emit(Opcode::OP_CONTAINED, 2), + default => $this->emit(Opcode::LESS, 1), + }, + '>' => $next === '=' ? $this->emit(Opcode::GREATEREQUAL, 2) : $this->emit(Opcode::GREATER, 1), + '!' => $next === '=' ? $this->emit(Opcode::NOTEQUALS, 2) : $this->emit(Opcode::NOT, 1), + '&' => $next === '&' ? $this->emit(Opcode::OP_OVERLAPS, 2) : $this->emit(Opcode::BITWISE_AND, 1), + '|' => $next === '|' ? $this->emit(Opcode::OP_CONCAT, 2) : $this->emit(Opcode::BITWISE_OR, 1), + default => $this->error(), + }; + } - case 301: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case ':': - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '\\': - case '_': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - $yycursor += 1; - $yystate = 45; - break 2; - default: - $yystate = 302; - break 2; - } - // no break - case 302: - $this->token = new Token(Opcode::UPDATE); - $this->state->setCursor($yycursor); - return ScannerStatus::OK; + /** + * [\\][a-zA-Z_]... is an IDENTIFIER without its leading backslash; any + * other backslash matches no rule. + */ + private function scanQualifiedWord(int $at): Token + { + $next = $this->phql[$at + 1] ?? ''; + if (!(($next >= 'a' && $next <= 'z') || ($next >= 'A' && $next <= 'Z') || $next === '_')) { + return $this->error(); + } - case 303: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case ':': - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '\\': - case '_': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - $yycursor += 1; - $yystate = 45; - break 2; - default: - $yystate = 304; - break 2; - } - // no break - case 304: - $this->token = new Token(Opcode::VALUES); - $this->state->setCursor($yycursor); - return ScannerStatus::OK; + $length = 2 + strspn($this->phql, self::IDENTIFIER_TAIL, $at + 2); - case 305: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case ':': - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '\\': - case '_': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - $yycursor += 1; - $yystate = 45; - break 2; - default: - $yystate = 306; - break 2; - } - // no break - case 306: - $this->token = new Token(Opcode::AGAINST); - $this->state->setCursor($yycursor); - return ScannerStatus::OK; + return $this->emit(Opcode::IDENTIFIER, $length, substr($this->phql, $at + 1, $length - 1)); + } - case 307: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case ':': - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '\\': - case '_': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - $yycursor += 1; - $yystate = 45; - break 2; - default: - $yystate = 308; - break 2; - } - // no break - case 308: - $this->token = new Token(Opcode::BETWEEN); - $this->state->setCursor($yycursor); - return ScannerStatus::OK; + /** + * DSTRING = ["] (ESCQQ|ESCSEQ|ANYNOEOF\[\\"])* ["], SSTRING likewise with + * [']: a backslash escapes any byte but a newline or NUL. Without a + * closing quote the quote itself matches no rule. + */ + private function scanString(int $at, string $quote): Token + { + $stop = $quote . "\\\0"; + $end = $this->end; + $i = $at + 1; + + while (true) { + $i += strcspn($this->phql, $stop, $i); + if ($i >= $end) { + return $this->error(); + } - case 309: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case ':': - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '\\': - case '_': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - $yycursor += 1; - $yystate = 45; - break 2; - default: - $yystate = 310; - break 2; - } - // no break - case 310: - $this->token = new Token(Opcode::CONVERT); - $this->state->setCursor($yycursor); - return ScannerStatus::OK; + if ($this->phql[$i] === $quote) { + break; + } - case 311: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'T': - case 't': - $yycursor += 1; - $yystate = 313; - break 2; - default: - $yystate = 46; - break 2; - } - // no break - case 312: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'W': - case 'w': - $yycursor += 1; - $yystate = 315; - break 2; - default: - $yystate = 69; - break 2; - } - // no break - case 313: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case ':': - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '\\': - case '_': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - $yycursor += 1; - $yystate = 45; - break 2; - default: - $yystate = 314; - break 2; - } - // no break - case 314: - $this->token = new Token(Opcode::DISTINCT); - $this->state->setCursor($yycursor); - return ScannerStatus::OK; + $escaped = $this->phql[$i + 1] ?? "\0"; + if ($escaped === "\n" || $escaped === "\0" || $i + 1 >= $end) { + return $this->error(); + } - case 315: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'E': - case 'e': - $yycursor += 1; - $yystate = 316; - break 2; - default: - $yystate = 69; - break 2; - } - // no break - case 316: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'E': - case 'e': - $yycursor += 1; - $yystate = 317; - break 2; - default: - $yystate = 69; - break 2; - } - // no break - case 317: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case 'N': - case 'n': - $yycursor += 1; - $yystate = 318; - break 2; - default: - $yystate = 69; - break 2; - } - // no break - case 318: - $this->token = new Token(Opcode::BETWEEN_NOT); - $this->state->setCursor($yycursor); - return ScannerStatus::OK; + $i += 2; + } - case 319: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '>': - $yycursor += 1; - $yystate = 320; - break 2; - default: - $yystate = 3; - break 2; - } - // no break - case 320: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '>': - $yycursor += 1; - $yystate = 321; - break 2; - default: - $yystate = 322; - break 2; - } - // no break - case 321: - $this->token = new Token(Opcode::OP_JSON_PATH_TEXT); - $this->state->setCursor($yycursor); - return ScannerStatus::OK; + $value = substr($this->phql, $at + 1, $i - $at - 1); + if (str_contains($value, '\\')) { + $value = strtr($value, self::ESCAPES); + } - case 322: - $this->token = new Token(Opcode::OP_JSON_PATH); - $this->state->setCursor($yycursor); - return ScannerStatus::OK; + return $this->emit(Opcode::STRING, $i - $at + 1, $value); + } - case 323: - $yych = $yyinput[$yycursor]; - switch ($yych) { - case '>': - $yycursor += 1; - $yystate = 325; - break 2; - default: - $yystate = 326; - break 2; - } - // no break - case 324: - $this->token = new Token(Opcode::SUB); - $this->state->setCursor($yycursor); - return ScannerStatus::OK; + /** + * SPLACEHOLDER = ":"[a-zA-Z0-9_\-]+":", otherwise a lone COLON. + */ + private function scanStringPlaceholder(int $at): Token + { + $name = strspn($this->phql, self::SPLACEHOLDER_NAME, $at + 1); + if ($name === 0 || ($this->phql[$at + 1 + $name] ?? '') !== ':') { + return $this->emit(Opcode::COLON, 1); + } - case 325: - $this->token = new Token(Opcode::OP_JSON_GET_TEXT); - $this->state->setCursor($yycursor); - return ScannerStatus::OK; + return $this->emit(Opcode::SPLACEHOLDER, $name + 2, substr($this->phql, $at + 1, $name)); + } - case 326: - $this->token = new Token(Opcode::OP_JSON_GET); - $this->state->setCursor($yycursor); - return ScannerStatus::OK; + /** + * IDENTIFIER, a keyword, or `NOT BETWEEN` (exactly one space) from a + * letter or underscore. HINTEGER matches no more than IDENTIFIER here + * and makes an IDENTIFIER of the same text when it ties. + */ + private function scanWord(int $at): Token + { + $length = 1 + strspn($this->phql, self::IDENTIFIER_TAIL, $at + 1); + $word = substr($this->phql, $at, $length); + $lower = strtr($word, self::UPPER_CASE, self::LOWER_CASE); - case 327: - $this->token = new Token(Opcode::OP_CONTAINED); - $this->state->setCursor($yycursor); - return ScannerStatus::OK; + if ($lower === 'not' && strncasecmp(substr($this->phql, $at + 3, 8), ' between', 8) === 0) { + return $this->emit(Opcode::BETWEEN_NOT, 11); + } - default: - throw new Exception("internal lexer error"); - } - } + $keyword = self::KEYWORDS[$lower] ?? null; + if ($keyword !== null) { + return $this->emit($keyword, $length); } - return $status; + return $this->emit(Opcode::IDENTIFIER, $length, $word); } } diff --git a/src/Scanner/ScannerStatus.php b/src/Scanner/ScannerStatus.php deleted file mode 100644 index 74b06f7..0000000 --- a/src/Scanner/ScannerStatus.php +++ /dev/null @@ -1,13 +0,0 @@ -bufferLength = strlen($buffer); - $this->rawBuffer = $buffer . "\0"; - $this->startLength = mb_strlen($buffer); - - if ($this->startLength > 0) { - $this->start = $buffer[0]; - } - } - - public function getActiveToken(): ?Opcode - { - return $this->activeToken; - } - - public function getBufferLength(): int - { - return $this->bufferLength; - } - - public function getCursor(): int - { - return $this->cursor; - } - - public function getRawBuffer(): string - { - return $this->rawBuffer; - } - - public function getStart(): ?string - { - return $this->start; - } - - public function getStartLength(): int - { - return $this->startLength; - } - - public function incrementStart(int $value = 1): static - { - $this->cursor += $value; - $this->start = $this->rawBuffer[$this->cursor] ?? null; - - return $this; - } - - public function setActiveToken(?Opcode $activeToken): static - { - $this->activeToken = $activeToken; - - return $this; - } - - public function setCursor(int $cursor): static - { - $this->cursor = $cursor; - $this->start = $this->rawBuffer[$this->cursor] ?? null; - - return $this; - } - - public function setStartLength(int $startLength): static - { - $this->startLength = $startLength; - - return $this; - } -} diff --git a/src/Scanner/Token.php b/src/Scanner/Token.php index f8ac0bf..b94a8fd 100644 --- a/src/Scanner/Token.php +++ b/src/Scanner/Token.php @@ -1,15 +1,38 @@ + * + * For the full copyright and license information, please view the LICENSE.txt + * file that was distributed with this source code. + */ + declare(strict_types=1); namespace Phalcon\Phql\Scanner; +/** + * One scanned token: an Opcode value (or one of the sentinels below) and, + * for identifiers, literals and placeholders, its text. + */ final class Token { + /** + * End of input: the end of the string or its first NUL byte. 0 is also + * the end-of-input token number of cphalcon's Lemon parser. + */ + public const EOF = 0; + + /** + * No token matches at the cursor (cphalcon's PHQL_SCANNER_RETCODE_ERR). + */ + public const SCAN_ERROR = -2; + public function __construct( - public readonly ?Opcode $opcode = null, + public readonly int $opcode, public readonly ?string $value = null, - public readonly int $length = 0, ) { } } diff --git a/src/Tokens.php b/src/Tokens.php index f18a0aa..182f52a 100644 --- a/src/Tokens.php +++ b/src/Tokens.php @@ -13,102 +13,109 @@ namespace Phalcon\Phql; +use Phalcon\Phql\Scanner\Opcode; + /** - * Human readable token names, used by the generated parser to build syntax - * error messages ("unexpected token X"). The values are the - * Phalcon\Phql\Scanner\Opcode codes; they are written as integers because an - * enum case value cannot be used in a static property initializer on PHP 8.1. + * Human readable token names, used in syntax error messages ("unexpected + * token X"). */ -class Tokens +final class Tokens { /** - * @var array + * The name cphalcon prints for a token in "Syntax error, unexpected + * token ..." messages: the phql_tokens[] table of base.c, in its order. + * Tokens the table does not list (TRUE, FALSE, BPLACEHOLDER, BETWEEN_NOT, + * `~`, `^`, whitespace) print as UNKNOWN. */ - public static array $names = [ - 'INTEGER' => 258, // Opcode::INTEGER - 'DOUBLE' => 259, // Opcode::DOUBLE - 'STRING' => 260, // Opcode::STRING - 'IDENTIFIER' => 265, // Opcode::IDENTIFIER - 'HEXAINTEGER' => 414, // Opcode::HINTEGER - 'MINUS' => 367, // Opcode::MINUS - '+' => 43, // Opcode::ADD - '-' => 45, // Opcode::SUB - '*' => 42, // Opcode::MUL - '/' => 47, // Opcode::DIV - '&' => 38, // Opcode::BITWISE_AND - '|' => 124, // Opcode::BITWISE_OR - '@@' => 401, // Opcode::OP_MATCHES - '@>' => 402, // Opcode::OP_CONTAINS - '<@' => 403, // Opcode::OP_CONTAINED - '&&' => 404, // Opcode::OP_OVERLAPS - '||' => 405, // Opcode::OP_CONCAT - '->' => 406, // Opcode::OP_JSON_GET - '->>' => 416, // Opcode::OP_JSON_GET_TEXT - '#>' => 417, // Opcode::OP_JSON_PATH - '#>>' => 418, // Opcode::OP_JSON_PATH_TEXT - '%%' => 37, // Opcode::MOD - 'AND' => 266, // Opcode::AND - 'OR' => 267, // Opcode::OR - 'LIKE' => 268, // Opcode::LIKE - 'ILIKE' => 275, // Opcode::ILIKE - 'DOT' => 46, // Opcode::DOT - 'COLON' => 58, // Opcode::COLON - 'COMMA' => 269, // Opcode::COMMA - 'EQUALS' => 61, // Opcode::EQUALS - 'NOT EQUALS' => 270, // Opcode::NOTEQUALS - 'NOT' => 33, // Opcode::NOT - '<' => 60, // Opcode::LESS - '<=' => 271, // Opcode::LESSEQUAL - '>' => 62, // Opcode::GREATER - '>=' => 272, // Opcode::GREATEREQUAL - '(' => 40, // Opcode::PARENTHESES_OPEN - ')' => 41, // Opcode::PARENTHESES_CLOSE - 'NUMERIC PLACEHOLDER' => 273, // Opcode::NPLACEHOLDER - 'STRING PLACEHOLDER' => 274, // Opcode::SPLACEHOLDER - 'UPDATE' => 300, // Opcode::UPDATE - 'SET' => 301, // Opcode::SET - 'WHERE' => 302, // Opcode::WHERE - 'DELETE' => 303, // Opcode::DELETE - 'FROM' => 304, // Opcode::FROM - 'AS' => 305, // Opcode::AS - 'INSERT' => 306, // Opcode::INSERT - 'INTO' => 307, // Opcode::INTO - 'VALUES' => 308, // Opcode::VALUES - 'SELECT' => 309, // Opcode::SELECT - 'ORDER' => 310, // Opcode::ORDER - 'BY' => 311, // Opcode::BY - 'LIMIT' => 312, // Opcode::LIMIT - 'OFFSET' => 329, // Opcode::OFFSET - 'GROUP' => 313, // Opcode::GROUP - 'HAVING' => 314, // Opcode::HAVING - 'IN' => 315, // Opcode::IN - 'ON' => 316, // Opcode::ON - 'INNER' => 317, // Opcode::INNER - 'JOIN' => 318, // Opcode::JOIN - 'LEFT' => 319, // Opcode::LEFT - 'RIGHT' => 320, // Opcode::RIGHT - 'IS' => 321, // Opcode::IS - 'NULL' => 322, // Opcode::NULL - 'NOT IN' => 323, // Opcode::NOTIN - 'CROSS' => 324, // Opcode::CROSS - 'OUTER' => 326, // Opcode::OUTER - 'FULL' => 325, // Opcode::FULL - 'ASC' => 327, // Opcode::ASC - 'DESC' => 328, // Opcode::DESC - 'BETWEEN' => 331, // Opcode::BETWEEN - 'DISTINCT' => 330, // Opcode::DISTINCT - 'AGAINST' => 276, // Opcode::AGAINST - 'CAST' => 333, // Opcode::CAST - 'CONVERT' => 336, // Opcode::CONVERT - 'USING' => 337, // Opcode::USING - 'ALL' => 338, // Opcode::ALL - 'EXISTS' => 408, // Opcode::EXISTS - 'CASE' => 409, // Opcode::CASE - 'WHEN' => 410, // Opcode::WHEN - 'THEN' => 413, // Opcode::THEN - 'ELSE' => 411, // Opcode::ELSE - 'END' => 412, // Opcode::END - 'FOR' => 339, // Opcode::FOR - 'WITH' => 415, // Opcode::WITH - ]; + public static function name(int $opcode): string + { + return match ($opcode) { + Opcode::INTEGER->value => 'INTEGER', + Opcode::DOUBLE->value => 'DOUBLE', + Opcode::STRING->value => 'STRING', + Opcode::IDENTIFIER->value => 'IDENTIFIER', + Opcode::HINTEGER->value => 'HEXAINTEGER', + Opcode::MINUS->value => 'MINUS', + Opcode::ADD->value => '+', + Opcode::SUB->value => '-', + Opcode::MUL->value => '*', + Opcode::DIV->value => '/', + Opcode::BITWISE_AND->value => '&', + Opcode::BITWISE_OR->value => '|', + Opcode::OP_MATCHES->value => '@@', + Opcode::OP_CONTAINS->value => '@>', + Opcode::OP_CONTAINED->value => '<@', + Opcode::OP_OVERLAPS->value => '&&', + Opcode::OP_CONCAT->value => '||', + Opcode::OP_JSON_GET->value => '->', + Opcode::OP_JSON_GET_TEXT->value => '->>', + Opcode::OP_JSON_PATH->value => '#>', + Opcode::OP_JSON_PATH_TEXT->value => '#>>', + Opcode::MOD->value => '%%', + Opcode::AND->value => 'AND', + Opcode::OR->value => 'OR', + Opcode::LIKE->value => 'LIKE', + Opcode::ILIKE->value => 'ILIKE', + Opcode::DOT->value => 'DOT', + Opcode::COLON->value => 'COLON', + Opcode::COMMA->value => 'COMMA', + Opcode::EQUALS->value => 'EQUALS', + Opcode::NOTEQUALS->value => 'NOT EQUALS', + Opcode::NOT->value => 'NOT', + Opcode::LESS->value => '<', + Opcode::LESSEQUAL->value => '<=', + Opcode::GREATER->value => '>', + Opcode::GREATEREQUAL->value => '>=', + Opcode::PARENTHESES_OPEN->value => '(', + Opcode::PARENTHESES_CLOSE->value => ')', + Opcode::NPLACEHOLDER->value => 'NUMERIC PLACEHOLDER', + Opcode::SPLACEHOLDER->value => 'STRING PLACEHOLDER', + Opcode::UPDATE->value => 'UPDATE', + Opcode::SET->value => 'SET', + Opcode::WHERE->value => 'WHERE', + Opcode::DELETE->value => 'DELETE', + Opcode::FROM->value => 'FROM', + Opcode::AS->value => 'AS', + Opcode::INSERT->value => 'INSERT', + Opcode::INTO->value => 'INTO', + Opcode::VALUES->value => 'VALUES', + Opcode::SELECT->value => 'SELECT', + Opcode::ORDER->value => 'ORDER', + Opcode::BY->value => 'BY', + Opcode::LIMIT->value => 'LIMIT', + Opcode::OFFSET->value => 'OFFSET', + Opcode::GROUP->value => 'GROUP', + Opcode::HAVING->value => 'HAVING', + Opcode::IN->value => 'IN', + Opcode::ON->value => 'ON', + Opcode::INNER->value => 'INNER', + Opcode::JOIN->value => 'JOIN', + Opcode::LEFT->value => 'LEFT', + Opcode::RIGHT->value => 'RIGHT', + Opcode::IS->value => 'IS', + Opcode::NULL->value => 'NULL', + Opcode::NOTIN->value => 'NOT IN', + Opcode::CROSS->value => 'CROSS', + Opcode::OUTER->value => 'OUTER', + Opcode::FULL->value => 'FULL', + Opcode::ASC->value => 'ASC', + Opcode::DESC->value => 'DESC', + Opcode::BETWEEN->value => 'BETWEEN', + Opcode::DISTINCT->value => 'DISTINCT', + Opcode::AGAINST->value => 'AGAINST', + Opcode::CAST->value => 'CAST', + Opcode::CONVERT->value => 'CONVERT', + Opcode::USING->value => 'USING', + Opcode::ALL->value => 'ALL', + Opcode::EXISTS->value => 'EXISTS', + Opcode::CASE->value => 'CASE', + Opcode::WHEN->value => 'WHEN', + Opcode::THEN->value => 'THEN', + Opcode::ELSE->value => 'ELSE', + Opcode::END->value => 'END', + Opcode::FOR->value => 'FOR', + Opcode::WITH->value => 'WITH', + default => 'UNKNOWN', + }; + } } diff --git a/tests/differential.php b/tests/differential.php new file mode 100644 index 0000000..91cfccd --- /dev/null +++ b/tests/differential.php @@ -0,0 +1,220 @@ + + * + * For the full copyright and license information, please view the LICENSE.txt + * file that was distributed with this source code. + */ + +declare(strict_types=1); + +/** + * Compares this package against the cphalcon C implementation, live, case by + * case over the whole parity corpus (`tests/fixtures/parity/*.php`), with + * literals enabled and disabled. + * + * php -d extension=phalcon tests/differential.php [--fuzz=N] [--seed=S] [--verbose] + * + * The AST (or the exception message) must be identical; any mismatch outside + * `allow-list.php` fails the run (exit 1). Allow-listed cases are checked + * against their recorded expectation instead, so the allow-list cannot hide a + * regression. + * + * `--fuzz=N` adds N generated inputs, reproducible from `--seed`: corpus + * entries mutated by deleting, duplicating, swapping or inserting tokens and + * random bytes, and random nestings of every recursive construct (depth 1 to + * 120, across the 100-entry stack limit), some with arbitrary tokens as the + * innermost operand or cut short, so that invalid input meets the limit. + * + * Requires ext-phalcon; exits 0 with a notice otherwise so it is harmless in a + * pipeline that does not always have the extension (CI asserts it is loaded). + */ + +require __DIR__ . '/../vendor/autoload.php'; + +use Phalcon\Mvc\Model\Query\Lang; +use Phalcon\Phql\Parser as PhpParser; +use Phalcon\Phql\Tests\Support\Parity; + +if (!extension_loaded('phalcon') || !class_exists(Lang::class)) { + fwrite(STDERR, "ext-phalcon is not loaded; nothing to compare against.\n"); + + exit(0); +} + +ini_set('phalcon.orm.cache_level', '-1'); + +$options = getopt('', ['fuzz::', 'seed::', 'verbose']); +$fuzz = (int) ($options['fuzz'] ?? 0); +$seed = (int) ($options['seed'] ?? 1); +$verbose = isset($options['verbose']); + +$allowList = Parity::allowList(); +$checked = 0; +$mismatches = 0; +$allowed = 0; + +$cParse = static function (string $phql, bool $literals): array { + ini_set('phalcon.orm.enable_literals', $literals ? '1' : '0'); + + return Parity::jsonSafe(Parity::comparable(Parity::run(static fn (string $p): mixed => Lang::parsePHQL($p), $phql))); +}; + +$phpParse = static fn (string $phql, bool $literals): array => Parity::jsonSafe(Parity::comparable(Parity::run( + static fn (string $p): mixed => (new PhpParser())->setEnableLiterals($literals)->parse($p), + $phql +))); + +$show = static function (string $key, string $phql, mixed $c, mixed $php) use ($verbose): void { + echo "MISMATCH {$key}\n"; + if (!$verbose) { + return; + } + + $encode = static fn (mixed $v): string => (string) json_encode( + Parity::jsonSafe($v), + JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE, + Parity::JSON_DEPTH + ); + echo ' input : ' . $encode($phql) . "\n"; + echo ' C : ' . $encode($c) . "\n"; + echo ' PHP : ' . $encode($php) . "\n\n"; +}; + +$compare = static function (string $key, string $phql) use ( + $allowList, + $cParse, + $phpParse, + $show, + &$checked, + &$mismatches, + &$allowed +): void { + foreach (Parity::MODES as $mode => $literals) { + $checked++; + $modeKey = $key . '/' . $mode; + $php = $phpParse($phql, $literals); + + if (isset($allowList[$modeKey])) { + $allowed++; + $expected = Parity::jsonSafe(Parity::comparable($allowList[$modeKey])); + if ($php !== $expected) { + $mismatches++; + $show('[allow-list] ' . $modeKey, $phql, $expected, $php); + } + + continue; + } + + $c = $cParse($phql, $literals); + if ($c !== $php) { + $mismatches++; + $show($modeKey, $phql, $c, $php); + } + } +}; + +$corpus = Parity::corpus(); + +foreach ($corpus as $group => $sources) { + foreach ($sources as $label => $source) { + $compare($group . '/' . $label, $source); + } +} + +if ($fuzz > 0) { + mt_srand($seed); + + $vocabulary = [ + 'SELECT', 'FROM', 'WHERE', 'AND', 'OR', 'NOT', 'IN', 'IS', 'NULL', 'LIKE', 'ILIKE', 'BETWEEN', + 'NOT BETWEEN', 'AGAINST', 'AS', 'JOIN', 'LEFT', 'INNER', 'ON', 'GROUP', 'BY', 'ORDER', 'HAVING', + 'LIMIT', 'OFFSET', 'FOR', 'UPDATE', 'SET', 'DELETE', 'INSERT', 'INTO', 'VALUES', 'DISTINCT', 'ALL', + 'CASE', 'WHEN', 'THEN', 'ELSE', 'END', 'CAST', 'CONVERT', 'USING', 'EXISTS', 'WITH', 'TRUE', 'FALSE', + 'ASC', 'DESC', '(', ')', ',', '.', '*', '+', '-', '/', '%', '=', '!=', '<>', '<', '>', '<=', '>=', + '&', '|', '^', '~', '->', '->>', '#>', '#>>', '@@', '@>', '<@', '&&', '||', ':', '?0', ':p:', '{p}', + '{p:int}', 'a', 'r.a', '[a b]', '\\A\\B', '1', '0x1F', '1.5', "'s'", '"d"', "''", '0', 'f(', 'f()', + ]; + $wrappers = [ + ['(', ')'], ['NOT ', ''], ['- ', ''], ['~ ', ''], ['f(', ')'], ['f(DISTINCT ', ')'], ['CAST(', ' AS INT)'], + ['CONVERT(', ' USING utf8)'], ['(SELECT ', ' FROM r)'], ['a IN (', ')'], ['a NOT IN (', ')'], + ['CASE ', ' WHEN 1 THEN 2 END'], ['CASE a WHEN 1 THEN ', ' END'], ['a + (', ')'], ['', ' NOT LIKE a'], + ['a AGAINST ', ''], ['EXISTS (SELECT * FROM r WHERE ', ')'], ['a IN (SELECT ', ' FROM r)'], + ]; + $contexts = [ + 'SELECT %s FROM r', 'SELECT * FROM r WHERE %s', 'SELECT * FROM r ORDER BY %s', 'UPDATE r SET a = %s', + 'INSERT INTO r VALUES (%s)', 'SELECT * FROM r JOIN s ON %s', 'DELETE FROM r WHERE %s', + 'SELECT * FROM r GROUP BY %s HAVING %s', + ]; + $sources = []; + foreach ($corpus as $group => $cases) { + if ($group !== 'depth') { + foreach ($cases as $case) { + $sources[] = $case; + } + } + } + + $pick = static fn (array $list): mixed => $list[mt_rand(0, count($list) - 1)]; + + $mutate = static function (string $phql) use ($vocabulary, $pick): string { + $pieces = preg_split('/(\s+|[(),])/', $phql, -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY) ?: [$phql]; + $rounds = mt_rand(1, 3); + for ($i = 0; $i < $rounds; $i++) { + $at = mt_rand(0, max(0, count($pieces) - 1)); + switch (mt_rand(0, 5)) { + case 0: + array_splice($pieces, $at, 1); + break; + case 1: + array_splice($pieces, $at, 0, [$pieces[$at] ?? '']); + break; + case 2: + $other = mt_rand(0, max(0, count($pieces) - 1)); + $swap = $pieces[$at] ?? ''; + $pieces[$at] = $pieces[$other] ?? ''; + $pieces[$other] = $swap; + break; + case 3: + array_splice($pieces, $at, 0, [' ' . $pick($vocabulary) . ' ']); + break; + case 4: + $pieces[$at] = $pick($vocabulary); + break; + default: + array_splice($pieces, $at, 0, [chr(mt_rand(0, 255))]); + break; + } + } + + return implode('', $pieces); + }; + + $nest = static function () use ($wrappers, $contexts, $vocabulary, $pick): string { + $expr = mt_rand(0, 1) === 1 ? 'a' : '1'; + if (mt_rand(0, 2) === 0) { + $expr = implode(' ', array_map(static fn (): string => $pick($vocabulary), range(1, mt_rand(1, 3)))); + } + + $depth = mt_rand(1, 120); + for ($i = 0; $i < $depth; $i++) { + [$open, $close] = $pick($wrappers); + $expr = $open . $expr . $close; + } + + $phql = str_replace('%s', $expr, $pick($contexts)); + + return mt_rand(0, 5) === 0 ? substr($phql, 0, mt_rand(0, strlen($phql))) : $phql; + }; + + for ($i = 0; $i < $fuzz; $i++) { + $phql = mt_rand(0, 2) === 0 ? $nest() : $mutate($pick($sources)); + $compare("fuzz/seed{$seed}/#{$i}", $phql); + } +} + +echo "Checked {$checked} case(s) ({$allowed} allow-listed), seed {$seed}: {$mismatches} mismatch(es).\n"; + +exit($mismatches === 0 ? 0 : 1); diff --git a/tests/fixtures/parity/depth.json b/tests/fixtures/parity/depth.json new file mode 100644 index 0000000..60d611d --- /dev/null +++ b/tests/fixtures/parity/depth.json @@ -0,0 +1,181 @@ +{ + "generator": "ext-phalcon 5.23.0", + "cases": { + "parens-column 94": {"source":"SELECT ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((1)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":258,"value":"1"}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "parens-column 95": {"source":"SELECT (((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((1))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":258,"value":"1"}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "parens-column 96": {"source":"SELECT ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((1)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) FROM r","parse":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "parens-column 97": {"source":"SELECT (((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((1))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) FROM r","parse":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "parens-column 98": {"source":"SELECT ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((1)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) FROM r","parse":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "parens-column 99": {"source":"SELECT (((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((1))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) FROM r","parse":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "parens-where 94": {"source":"SELECT * FROM r WHERE ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((a))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":355,"name":"a"}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":355,"name":"a"}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}, + "parens-where 95": {"source":"SELECT * FROM r WHERE (((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((a)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":355,"name":"a"}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":355,"name":"a"}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}, + "parens-where 96": {"source":"SELECT * FROM r WHERE ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((a))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))","parse":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "parens-where 97": {"source":"SELECT * FROM r WHERE (((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((a)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))","parse":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "parens-where 98": {"source":"SELECT * FROM r WHERE ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((a))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))","parse":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "parens-where 99": {"source":"SELECT * FROM r WHERE (((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((a)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))","parse":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "parens-order 90": {"source":"SELECT * FROM r ORDER BY ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((a))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"orderBy":{"column":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":355,"name":"a"}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"orderBy":{"column":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":355,"name":"a"}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}, + "parens-order 91": {"source":"SELECT * FROM r ORDER BY (((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((a)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"orderBy":{"column":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":355,"name":"a"}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"orderBy":{"column":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":355,"name":"a"}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}, + "parens-order 92": {"source":"SELECT * FROM r ORDER BY ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((a))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))","parse":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "parens-order 93": {"source":"SELECT * FROM r ORDER BY (((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((a)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))","parse":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "parens-order 94": {"source":"SELECT * FROM r ORDER BY ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((a))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))","parse":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "parens-order 95": {"source":"SELECT * FROM r ORDER BY (((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((a)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))","parse":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "parens-update 90": {"source":"UPDATE r SET a = ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((1))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))","parse":{"outcome":"value","value":{"type":300,"update":{"tables":{"qualifiedName":{"type":355,"name":"r"}},"values":{"column":{"type":355,"name":"a"},"expr":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":258,"value":"1"}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "parens-update 91": {"source":"UPDATE r SET a = (((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((1)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))","parse":{"outcome":"value","value":{"type":300,"update":{"tables":{"qualifiedName":{"type":355,"name":"r"}},"values":{"column":{"type":355,"name":"a"},"expr":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":258,"value":"1"}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "parens-update 92": {"source":"UPDATE r SET a = ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((1))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))","parse":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "parens-update 93": {"source":"UPDATE r SET a = (((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((1)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))","parse":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "parens-update 94": {"source":"UPDATE r SET a = ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((1))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))","parse":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "parens-update 95": {"source":"UPDATE r SET a = (((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((1)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))","parse":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "parens-insert 91": {"source":"INSERT INTO r VALUES ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((1))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))","parse":{"outcome":"value","value":{"type":306,"qualifiedName":{"type":355,"name":"r"},"values":[{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":258,"value":"1"}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}]}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "parens-insert 92": {"source":"INSERT INTO r VALUES (((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((1)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))","parse":{"outcome":"value","value":{"type":306,"qualifiedName":{"type":355,"name":"r"},"values":[{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":258,"value":"1"}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}]}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "parens-insert 93": {"source":"INSERT INTO r VALUES ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((1))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))","parse":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "parens-insert 94": {"source":"INSERT INTO r VALUES (((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((1)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))","parse":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "parens-insert 95": {"source":"INSERT INTO r VALUES ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((1))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))","parse":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "parens-insert 96": {"source":"INSERT INTO r VALUES (((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((1)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))","parse":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "parens-join-on 87": {"source":"SELECT * FROM r JOIN s ON (((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((a)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}},"joins":{"type":360,"qualified":{"type":355,"name":"s"},"conditions":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":355,"name":"a"}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}},"joins":{"type":360,"qualified":{"type":355,"name":"s"},"conditions":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":355,"name":"a"}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}, + "parens-join-on 88": {"source":"SELECT * FROM r JOIN s ON ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((a))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}},"joins":{"type":360,"qualified":{"type":355,"name":"s"},"conditions":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":355,"name":"a"}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}},"joins":{"type":360,"qualified":{"type":355,"name":"s"},"conditions":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":356,"left":{"type":355,"name":"a"}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}, + "parens-join-on 89": {"source":"SELECT * FROM r JOIN s ON (((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((a)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))","parse":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "parens-join-on 90": {"source":"SELECT * FROM r JOIN s ON ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((a))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))","parse":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "parens-join-on 91": {"source":"SELECT * FROM r JOIN s ON (((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((a)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))","parse":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "parens-join-on 92": {"source":"SELECT * FROM r JOIN s ON ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((a))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))","parse":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "subquery-column 29": {"source":"SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT 1 FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":407,"left":{"type":309,"select":{"columns":[{"type":354,"column":{"type":407,"left":{"type":309,"select":{"columns":[{"type":354,"column":{"type":407,"left":{"type":309,"select":{"columns":[{"type":354,"column":{"type":407,"left":{"type":309,"select":{"columns":[{"type":354,"column":{"type":407,"left":{"type":309,"select":{"columns":[{"type":354,"column":{"type":407,"left":{"type":309,"select":{"columns":[{"type":354,"column":{"type":407,"left":{"type":309,"select":{"columns":[{"type":354,"column":{"type":407,"left":{"type":309,"select":{"columns":[{"type":354,"column":{"type":407,"left":{"type":309,"select":{"columns":[{"type":354,"column":{"type":407,"left":{"type":309,"select":{"columns":[{"type":354,"column":{"type":407,"left":{"type":309,"select":{"columns":[{"type":354,"column":{"type":407,"left":{"type":309,"select":{"columns":[{"type":354,"column":{"type":407,"left":{"type":309,"select":{"columns":[{"type":354,"column":{"type":407,"left":{"type":309,"select":{"columns":[{"type":354,"column":{"type":407,"left":{"type":309,"select":{"columns":[{"type":354,"column":{"type":407,"left":{"type":309,"select":{"columns":[{"type":354,"column":{"type":407,"left":{"type":309,"select":{"columns":[{"type":354,"column":{"type":407,"left":{"type":309,"select":{"columns":[{"type":354,"column":{"type":407,"left":{"type":309,"select":{"columns":[{"type":354,"column":{"type":407,"left":{"type":309,"select":{"columns":[{"type":354,"column":{"type":407,"left":{"type":309,"select":{"columns":[{"type":354,"column":{"type":407,"left":{"type":309,"select":{"columns":[{"type":354,"column":{"type":407,"left":{"type":309,"select":{"columns":[{"type":354,"column":{"type":407,"left":{"type":309,"select":{"columns":[{"type":354,"column":{"type":407,"left":{"type":309,"select":{"columns":[{"type":354,"column":{"type":407,"left":{"type":309,"select":{"columns":[{"type":354,"column":{"type":407,"left":{"type":309,"select":{"columns":[{"type":354,"column":{"type":407,"left":{"type":309,"select":{"columns":[{"type":354,"column":{"type":407,"left":{"type":309,"select":{"columns":[{"type":354,"column":{"type":258,"value":"1"}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "subquery-column 30": {"source":"SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT 1 FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":407,"left":{"type":309,"select":{"columns":[{"type":354,"column":{"type":407,"left":{"type":309,"select":{"columns":[{"type":354,"column":{"type":407,"left":{"type":309,"select":{"columns":[{"type":354,"column":{"type":407,"left":{"type":309,"select":{"columns":[{"type":354,"column":{"type":407,"left":{"type":309,"select":{"columns":[{"type":354,"column":{"type":407,"left":{"type":309,"select":{"columns":[{"type":354,"column":{"type":407,"left":{"type":309,"select":{"columns":[{"type":354,"column":{"type":407,"left":{"type":309,"select":{"columns":[{"type":354,"column":{"type":407,"left":{"type":309,"select":{"columns":[{"type":354,"column":{"type":407,"left":{"type":309,"select":{"columns":[{"type":354,"column":{"type":407,"left":{"type":309,"select":{"columns":[{"type":354,"column":{"type":407,"left":{"type":309,"select":{"columns":[{"type":354,"column":{"type":407,"left":{"type":309,"select":{"columns":[{"type":354,"column":{"type":407,"left":{"type":309,"select":{"columns":[{"type":354,"column":{"type":407,"left":{"type":309,"select":{"columns":[{"type":354,"column":{"type":407,"left":{"type":309,"select":{"columns":[{"type":354,"column":{"type":407,"left":{"type":309,"select":{"columns":[{"type":354,"column":{"type":407,"left":{"type":309,"select":{"columns":[{"type":354,"column":{"type":407,"left":{"type":309,"select":{"columns":[{"type":354,"column":{"type":407,"left":{"type":309,"select":{"columns":[{"type":354,"column":{"type":407,"left":{"type":309,"select":{"columns":[{"type":354,"column":{"type":407,"left":{"type":309,"select":{"columns":[{"type":354,"column":{"type":407,"left":{"type":309,"select":{"columns":[{"type":354,"column":{"type":407,"left":{"type":309,"select":{"columns":[{"type":354,"column":{"type":407,"left":{"type":309,"select":{"columns":[{"type":354,"column":{"type":407,"left":{"type":309,"select":{"columns":[{"type":354,"column":{"type":407,"left":{"type":309,"select":{"columns":[{"type":354,"column":{"type":407,"left":{"type":309,"select":{"columns":[{"type":354,"column":{"type":407,"left":{"type":309,"select":{"columns":[{"type":354,"column":{"type":407,"left":{"type":309,"select":{"columns":[{"type":354,"column":{"type":258,"value":"1"}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "subquery-column 31": {"source":"SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT 1 FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r","parse":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "subquery-column 32": {"source":"SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT 1 FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r","parse":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "subquery-column 33": {"source":"SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT 1 FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r","parse":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "subquery-column 34": {"source":"SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT 1 FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r) FROM r","parse":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "exists 22": {"source":"SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r))))))))))))))))))))))","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":408,"right":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":408,"right":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":408,"right":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":408,"right":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":408,"right":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":408,"right":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":408,"right":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":408,"right":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":408,"right":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":408,"right":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":408,"right":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":408,"right":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":408,"right":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":408,"right":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":408,"right":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":408,"right":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":408,"right":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":408,"right":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":408,"right":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":408,"right":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":408,"right":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":408,"right":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":408,"right":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":408,"right":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":408,"right":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":408,"right":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":408,"right":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":408,"right":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":408,"right":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":408,"right":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":408,"right":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":408,"right":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":408,"right":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":408,"right":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":408,"right":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":408,"right":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":408,"right":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":408,"right":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":408,"right":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":408,"right":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":408,"right":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":408,"right":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":408,"right":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":408,"right":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}, + "exists 23": {"source":"SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r)))))))))))))))))))))))","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":408,"right":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":408,"right":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":408,"right":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":408,"right":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":408,"right":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":408,"right":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":408,"right":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":408,"right":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":408,"right":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":408,"right":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":408,"right":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":408,"right":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":408,"right":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":408,"right":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":408,"right":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":408,"right":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":408,"right":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":408,"right":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":408,"right":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":408,"right":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":408,"right":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":408,"right":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":408,"right":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":408,"right":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":408,"right":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":408,"right":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":408,"right":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":408,"right":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":408,"right":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":408,"right":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":408,"right":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":408,"right":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":408,"right":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":408,"right":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":408,"right":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":408,"right":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":408,"right":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":408,"right":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":408,"right":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":408,"right":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":408,"right":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":408,"right":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":408,"right":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":408,"right":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":408,"right":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":408,"right":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}, + "exists 24": {"source":"SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r))))))))))))))))))))))))","parse":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "exists 25": {"source":"SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r)))))))))))))))))))))))))","parse":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "exists 26": {"source":"SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r))))))))))))))))))))))))))","parse":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "exists 27": {"source":"SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r WHERE EXISTS (SELECT * FROM r)))))))))))))))))))))))))))","parse":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "in-subquery 17": {"source":"SELECT a FROM r WHERE a IN (SELECT a FROM r WHERE a IN (SELECT a FROM r WHERE a IN (SELECT a FROM r WHERE a IN (SELECT a FROM r WHERE a IN (SELECT a FROM r WHERE a IN (SELECT a FROM r WHERE a IN (SELECT a FROM r WHERE a IN (SELECT a FROM r WHERE a IN (SELECT a FROM r WHERE a IN (SELECT a FROM r WHERE a IN (SELECT a FROM r WHERE a IN (SELECT a FROM r WHERE a IN (SELECT a FROM r WHERE a IN (SELECT a FROM r WHERE a IN (SELECT a FROM r WHERE a IN (SELECT a FROM r WHERE a IN (SELECT a FROM r)))))))))))))))))","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"a"}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":315,"left":{"type":355,"name":"a"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"a"}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":315,"left":{"type":355,"name":"a"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"a"}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":315,"left":{"type":355,"name":"a"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"a"}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":315,"left":{"type":355,"name":"a"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"a"}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":315,"left":{"type":355,"name":"a"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"a"}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":315,"left":{"type":355,"name":"a"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"a"}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":315,"left":{"type":355,"name":"a"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"a"}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":315,"left":{"type":355,"name":"a"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"a"}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":315,"left":{"type":355,"name":"a"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"a"}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":315,"left":{"type":355,"name":"a"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"a"}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":315,"left":{"type":355,"name":"a"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"a"}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":315,"left":{"type":355,"name":"a"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"a"}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":315,"left":{"type":355,"name":"a"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"a"}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":315,"left":{"type":355,"name":"a"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"a"}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":315,"left":{"type":355,"name":"a"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"a"}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":315,"left":{"type":355,"name":"a"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"a"}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":315,"left":{"type":355,"name":"a"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"a"}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"a"}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":315,"left":{"type":355,"name":"a"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"a"}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":315,"left":{"type":355,"name":"a"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"a"}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":315,"left":{"type":355,"name":"a"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"a"}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":315,"left":{"type":355,"name":"a"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"a"}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":315,"left":{"type":355,"name":"a"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"a"}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":315,"left":{"type":355,"name":"a"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"a"}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":315,"left":{"type":355,"name":"a"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"a"}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":315,"left":{"type":355,"name":"a"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"a"}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":315,"left":{"type":355,"name":"a"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"a"}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":315,"left":{"type":355,"name":"a"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"a"}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":315,"left":{"type":355,"name":"a"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"a"}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":315,"left":{"type":355,"name":"a"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"a"}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":315,"left":{"type":355,"name":"a"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"a"}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":315,"left":{"type":355,"name":"a"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"a"}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":315,"left":{"type":355,"name":"a"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"a"}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":315,"left":{"type":355,"name":"a"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"a"}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":315,"left":{"type":355,"name":"a"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"a"}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}, + "in-subquery 18": {"source":"SELECT a FROM r WHERE a IN (SELECT a FROM r WHERE a IN (SELECT a FROM r WHERE a IN (SELECT a FROM r WHERE a IN (SELECT a FROM r WHERE a IN (SELECT a FROM r WHERE a IN (SELECT a FROM r WHERE a IN (SELECT a FROM r WHERE a IN (SELECT a FROM r WHERE a IN (SELECT a FROM r WHERE a IN (SELECT a FROM r WHERE a IN (SELECT a FROM r WHERE a IN (SELECT a FROM r WHERE a IN (SELECT a FROM r WHERE a IN (SELECT a FROM r WHERE a IN (SELECT a FROM r WHERE a IN (SELECT a FROM r WHERE a IN (SELECT a FROM r WHERE a IN (SELECT a FROM r))))))))))))))))))","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"a"}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":315,"left":{"type":355,"name":"a"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"a"}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":315,"left":{"type":355,"name":"a"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"a"}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":315,"left":{"type":355,"name":"a"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"a"}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":315,"left":{"type":355,"name":"a"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"a"}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":315,"left":{"type":355,"name":"a"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"a"}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":315,"left":{"type":355,"name":"a"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"a"}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":315,"left":{"type":355,"name":"a"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"a"}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":315,"left":{"type":355,"name":"a"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"a"}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":315,"left":{"type":355,"name":"a"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"a"}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":315,"left":{"type":355,"name":"a"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"a"}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":315,"left":{"type":355,"name":"a"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"a"}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":315,"left":{"type":355,"name":"a"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"a"}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":315,"left":{"type":355,"name":"a"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"a"}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":315,"left":{"type":355,"name":"a"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"a"}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":315,"left":{"type":355,"name":"a"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"a"}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":315,"left":{"type":355,"name":"a"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"a"}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":315,"left":{"type":355,"name":"a"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"a"}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":315,"left":{"type":355,"name":"a"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"a"}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"a"}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":315,"left":{"type":355,"name":"a"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"a"}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":315,"left":{"type":355,"name":"a"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"a"}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":315,"left":{"type":355,"name":"a"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"a"}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":315,"left":{"type":355,"name":"a"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"a"}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":315,"left":{"type":355,"name":"a"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"a"}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":315,"left":{"type":355,"name":"a"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"a"}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":315,"left":{"type":355,"name":"a"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"a"}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":315,"left":{"type":355,"name":"a"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"a"}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":315,"left":{"type":355,"name":"a"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"a"}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":315,"left":{"type":355,"name":"a"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"a"}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":315,"left":{"type":355,"name":"a"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"a"}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":315,"left":{"type":355,"name":"a"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"a"}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":315,"left":{"type":355,"name":"a"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"a"}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":315,"left":{"type":355,"name":"a"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"a"}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":315,"left":{"type":355,"name":"a"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"a"}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":315,"left":{"type":355,"name":"a"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"a"}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":315,"left":{"type":355,"name":"a"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"a"}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":315,"left":{"type":355,"name":"a"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"a"}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}, + "in-subquery 19": {"source":"SELECT a FROM r WHERE a IN (SELECT a FROM r WHERE a IN (SELECT a FROM r WHERE a IN (SELECT a FROM r WHERE a IN (SELECT a FROM r WHERE a IN (SELECT a FROM r WHERE a IN (SELECT a FROM r WHERE a IN (SELECT a FROM r WHERE a IN (SELECT a FROM r WHERE a IN (SELECT a FROM r WHERE a IN (SELECT a FROM r WHERE a IN (SELECT a FROM r WHERE a IN (SELECT a FROM r WHERE a IN (SELECT a FROM r WHERE a IN (SELECT a FROM r WHERE a IN (SELECT a FROM r WHERE a IN (SELECT a FROM r WHERE a IN (SELECT a FROM r WHERE a IN (SELECT a FROM r WHERE a IN (SELECT a FROM r)))))))))))))))))))","parse":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "in-subquery 20": {"source":"SELECT a FROM r WHERE a IN (SELECT a FROM r WHERE a IN (SELECT a FROM r WHERE a IN (SELECT a FROM r WHERE a IN (SELECT a FROM r WHERE a IN (SELECT a FROM r WHERE a IN (SELECT a FROM r WHERE a IN (SELECT a FROM r WHERE a IN (SELECT a FROM r WHERE a IN (SELECT a FROM r WHERE a IN (SELECT a FROM r WHERE a IN (SELECT a FROM r WHERE a IN (SELECT a FROM r WHERE a IN (SELECT a FROM r WHERE a IN (SELECT a FROM r WHERE a IN (SELECT a FROM r WHERE a IN (SELECT a FROM r WHERE a IN (SELECT a FROM r WHERE a IN (SELECT a FROM r WHERE a IN (SELECT a FROM r WHERE a IN (SELECT a FROM r))))))))))))))))))))","parse":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "in-subquery 21": {"source":"SELECT a FROM r WHERE a IN (SELECT a FROM r WHERE a IN (SELECT a FROM r WHERE a IN (SELECT a FROM r WHERE a IN (SELECT a FROM r WHERE a IN (SELECT a FROM r WHERE a IN (SELECT a FROM r WHERE a IN (SELECT a FROM r WHERE a IN (SELECT a FROM r WHERE a IN (SELECT a FROM r WHERE a IN (SELECT a FROM r WHERE a IN (SELECT a FROM r WHERE a IN (SELECT a FROM r WHERE a IN (SELECT a FROM r WHERE a IN (SELECT a FROM r WHERE a IN (SELECT a FROM r WHERE a IN (SELECT a FROM r WHERE a IN (SELECT a FROM r WHERE a IN (SELECT a FROM r WHERE a IN (SELECT a FROM r WHERE a IN (SELECT a FROM r WHERE a IN (SELECT a FROM r)))))))))))))))))))))","parse":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "in-subquery 22": {"source":"SELECT a FROM r WHERE a IN (SELECT a FROM r WHERE a IN (SELECT a FROM r WHERE a IN (SELECT a FROM r WHERE a IN (SELECT a FROM r WHERE a IN (SELECT a FROM r WHERE a IN (SELECT a FROM r WHERE a IN (SELECT a FROM r WHERE a IN (SELECT a FROM r WHERE a IN (SELECT a FROM r WHERE a IN (SELECT a FROM r WHERE a IN (SELECT a FROM r WHERE a IN (SELECT a FROM r WHERE a IN (SELECT a FROM r WHERE a IN (SELECT a FROM r WHERE a IN (SELECT a FROM r WHERE a IN (SELECT a FROM r WHERE a IN (SELECT a FROM r WHERE a IN (SELECT a FROM r WHERE a IN (SELECT a FROM r WHERE a IN (SELECT a FROM r WHERE a IN (SELECT a FROM r WHERE a IN (SELECT a FROM r))))))))))))))))))))))","parse":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "fcall 30": {"source":"SELECT f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(1)))))))))))))))))))))))))))))) FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":350,"name":"f","arguments":[{"type":350,"name":"f","arguments":[{"type":350,"name":"f","arguments":[{"type":350,"name":"f","arguments":[{"type":350,"name":"f","arguments":[{"type":350,"name":"f","arguments":[{"type":350,"name":"f","arguments":[{"type":350,"name":"f","arguments":[{"type":350,"name":"f","arguments":[{"type":350,"name":"f","arguments":[{"type":350,"name":"f","arguments":[{"type":350,"name":"f","arguments":[{"type":350,"name":"f","arguments":[{"type":350,"name":"f","arguments":[{"type":350,"name":"f","arguments":[{"type":350,"name":"f","arguments":[{"type":350,"name":"f","arguments":[{"type":350,"name":"f","arguments":[{"type":350,"name":"f","arguments":[{"type":350,"name":"f","arguments":[{"type":350,"name":"f","arguments":[{"type":350,"name":"f","arguments":[{"type":350,"name":"f","arguments":[{"type":350,"name":"f","arguments":[{"type":350,"name":"f","arguments":[{"type":350,"name":"f","arguments":[{"type":350,"name":"f","arguments":[{"type":350,"name":"f","arguments":[{"type":350,"name":"f","arguments":[{"type":350,"name":"f","arguments":[{"type":258,"value":"1"}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "fcall 31": {"source":"SELECT f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(1))))))))))))))))))))))))))))))) FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":350,"name":"f","arguments":[{"type":350,"name":"f","arguments":[{"type":350,"name":"f","arguments":[{"type":350,"name":"f","arguments":[{"type":350,"name":"f","arguments":[{"type":350,"name":"f","arguments":[{"type":350,"name":"f","arguments":[{"type":350,"name":"f","arguments":[{"type":350,"name":"f","arguments":[{"type":350,"name":"f","arguments":[{"type":350,"name":"f","arguments":[{"type":350,"name":"f","arguments":[{"type":350,"name":"f","arguments":[{"type":350,"name":"f","arguments":[{"type":350,"name":"f","arguments":[{"type":350,"name":"f","arguments":[{"type":350,"name":"f","arguments":[{"type":350,"name":"f","arguments":[{"type":350,"name":"f","arguments":[{"type":350,"name":"f","arguments":[{"type":350,"name":"f","arguments":[{"type":350,"name":"f","arguments":[{"type":350,"name":"f","arguments":[{"type":350,"name":"f","arguments":[{"type":350,"name":"f","arguments":[{"type":350,"name":"f","arguments":[{"type":350,"name":"f","arguments":[{"type":350,"name":"f","arguments":[{"type":350,"name":"f","arguments":[{"type":350,"name":"f","arguments":[{"type":350,"name":"f","arguments":[{"type":258,"value":"1"}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "fcall 32": {"source":"SELECT f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(1)))))))))))))))))))))))))))))))) FROM r","parse":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "fcall 33": {"source":"SELECT f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(1))))))))))))))))))))))))))))))))) FROM r","parse":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "fcall 34": {"source":"SELECT f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(1)))))))))))))))))))))))))))))))))) FROM r","parse":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "fcall 35": {"source":"SELECT f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(1))))))))))))))))))))))))))))))))))) FROM r","parse":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "fcall-distinct 30": {"source":"SELECT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT 1)))))))))))))))))))))))))))))) FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":350,"name":"f","arguments":[{"type":350,"name":"f","arguments":[{"type":350,"name":"f","arguments":[{"type":350,"name":"f","arguments":[{"type":350,"name":"f","arguments":[{"type":350,"name":"f","arguments":[{"type":350,"name":"f","arguments":[{"type":350,"name":"f","arguments":[{"type":350,"name":"f","arguments":[{"type":350,"name":"f","arguments":[{"type":350,"name":"f","arguments":[{"type":350,"name":"f","arguments":[{"type":350,"name":"f","arguments":[{"type":350,"name":"f","arguments":[{"type":350,"name":"f","arguments":[{"type":350,"name":"f","arguments":[{"type":350,"name":"f","arguments":[{"type":350,"name":"f","arguments":[{"type":350,"name":"f","arguments":[{"type":350,"name":"f","arguments":[{"type":350,"name":"f","arguments":[{"type":350,"name":"f","arguments":[{"type":350,"name":"f","arguments":[{"type":350,"name":"f","arguments":[{"type":350,"name":"f","arguments":[{"type":350,"name":"f","arguments":[{"type":350,"name":"f","arguments":[{"type":350,"name":"f","arguments":[{"type":350,"name":"f","arguments":[{"type":350,"name":"f","arguments":[{"type":258,"value":"1"}],"distinct":true}],"distinct":true}],"distinct":true}],"distinct":true}],"distinct":true}],"distinct":true}],"distinct":true}],"distinct":true}],"distinct":true}],"distinct":true}],"distinct":true}],"distinct":true}],"distinct":true}],"distinct":true}],"distinct":true}],"distinct":true}],"distinct":true}],"distinct":true}],"distinct":true}],"distinct":true}],"distinct":true}],"distinct":true}],"distinct":true}],"distinct":true}],"distinct":true}],"distinct":true}],"distinct":true}],"distinct":true}],"distinct":true}],"distinct":true}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "fcall-distinct 31": {"source":"SELECT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT 1))))))))))))))))))))))))))))))) FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":350,"name":"f","arguments":[{"type":350,"name":"f","arguments":[{"type":350,"name":"f","arguments":[{"type":350,"name":"f","arguments":[{"type":350,"name":"f","arguments":[{"type":350,"name":"f","arguments":[{"type":350,"name":"f","arguments":[{"type":350,"name":"f","arguments":[{"type":350,"name":"f","arguments":[{"type":350,"name":"f","arguments":[{"type":350,"name":"f","arguments":[{"type":350,"name":"f","arguments":[{"type":350,"name":"f","arguments":[{"type":350,"name":"f","arguments":[{"type":350,"name":"f","arguments":[{"type":350,"name":"f","arguments":[{"type":350,"name":"f","arguments":[{"type":350,"name":"f","arguments":[{"type":350,"name":"f","arguments":[{"type":350,"name":"f","arguments":[{"type":350,"name":"f","arguments":[{"type":350,"name":"f","arguments":[{"type":350,"name":"f","arguments":[{"type":350,"name":"f","arguments":[{"type":350,"name":"f","arguments":[{"type":350,"name":"f","arguments":[{"type":350,"name":"f","arguments":[{"type":350,"name":"f","arguments":[{"type":350,"name":"f","arguments":[{"type":350,"name":"f","arguments":[{"type":350,"name":"f","arguments":[{"type":258,"value":"1"}],"distinct":true}],"distinct":true}],"distinct":true}],"distinct":true}],"distinct":true}],"distinct":true}],"distinct":true}],"distinct":true}],"distinct":true}],"distinct":true}],"distinct":true}],"distinct":true}],"distinct":true}],"distinct":true}],"distinct":true}],"distinct":true}],"distinct":true}],"distinct":true}],"distinct":true}],"distinct":true}],"distinct":true}],"distinct":true}],"distinct":true}],"distinct":true}],"distinct":true}],"distinct":true}],"distinct":true}],"distinct":true}],"distinct":true}],"distinct":true}],"distinct":true}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "fcall-distinct 32": {"source":"SELECT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT 1)))))))))))))))))))))))))))))))) FROM r","parse":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "fcall-distinct 33": {"source":"SELECT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT 1))))))))))))))))))))))))))))))))) FROM r","parse":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "fcall-distinct 34": {"source":"SELECT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT 1)))))))))))))))))))))))))))))))))) FROM r","parse":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "fcall-distinct 35": {"source":"SELECT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT f(DISTINCT 1))))))))))))))))))))))))))))))))))) FROM r","parse":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cast 45": {"source":"SELECT CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(a AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":355,"name":"a"},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":355,"name":"a"},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "cast 46": {"source":"SELECT CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(a AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":355,"name":"a"},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":333,"left":{"type":355,"name":"a"},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}},"right":{"type":358,"name":"INT"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "cast 47": {"source":"SELECT CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(a AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) FROM r","parse":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cast 48": {"source":"SELECT CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(a AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) FROM r","parse":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cast 49": {"source":"SELECT CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(a AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) FROM r","parse":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cast 50": {"source":"SELECT CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(a AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) AS INT) FROM r","parse":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "convert 45": {"source":"SELECT CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(a USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":355,"name":"a"},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":355,"name":"a"},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "convert 46": {"source":"SELECT CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(a USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":355,"name":"a"},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":336,"left":{"type":355,"name":"a"},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}},"right":{"type":358,"name":"utf8"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "convert 47": {"source":"SELECT CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(a USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) FROM r","parse":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "convert 48": {"source":"SELECT CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(a USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) FROM r","parse":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "convert 49": {"source":"SELECT CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(a USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) FROM r","parse":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "convert 50": {"source":"SELECT CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(CONVERT(a USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) USING utf8) FROM r","parse":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "case 91": {"source":"SELECT CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE a WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":355,"name":"a"},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "case 92": {"source":"SELECT CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE a WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":409,"left":{"type":355,"name":"a"},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "case 93": {"source":"SELECT CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE a WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END FROM r","parse":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "case 94": {"source":"SELECT CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE a WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END FROM r","parse":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "case 95": {"source":"SELECT CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE a WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END FROM r","parse":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "case 96": {"source":"SELECT CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE CASE a WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END WHEN 1 THEN 2 END FROM r","parse":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "case-then 18": {"source":"SELECT CASE a WHEN 1 THEN CASE a WHEN 1 THEN CASE a WHEN 1 THEN CASE a WHEN 1 THEN CASE a WHEN 1 THEN CASE a WHEN 1 THEN CASE a WHEN 1 THEN CASE a WHEN 1 THEN CASE a WHEN 1 THEN CASE a WHEN 1 THEN CASE a WHEN 1 THEN CASE a WHEN 1 THEN CASE a WHEN 1 THEN CASE a WHEN 1 THEN CASE a WHEN 1 THEN CASE a WHEN 1 THEN CASE a WHEN 1 THEN CASE a WHEN 1 THEN 2 END END END END END END END END END END END END END END END END END END FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":409,"left":{"type":355,"name":"a"},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":409,"left":{"type":355,"name":"a"},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":409,"left":{"type":355,"name":"a"},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":409,"left":{"type":355,"name":"a"},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":409,"left":{"type":355,"name":"a"},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":409,"left":{"type":355,"name":"a"},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":409,"left":{"type":355,"name":"a"},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":409,"left":{"type":355,"name":"a"},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":409,"left":{"type":355,"name":"a"},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":409,"left":{"type":355,"name":"a"},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":409,"left":{"type":355,"name":"a"},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":409,"left":{"type":355,"name":"a"},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":409,"left":{"type":355,"name":"a"},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":409,"left":{"type":355,"name":"a"},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":409,"left":{"type":355,"name":"a"},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":409,"left":{"type":355,"name":"a"},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":409,"left":{"type":355,"name":"a"},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":409,"left":{"type":355,"name":"a"},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]}}]}}]}}]}}]}}]}}]}}]}}]}}]}}]}}]}}]}}]}}]}}]}}]}}]}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "case-then 19": {"source":"SELECT CASE a WHEN 1 THEN CASE a WHEN 1 THEN CASE a WHEN 1 THEN CASE a WHEN 1 THEN CASE a WHEN 1 THEN CASE a WHEN 1 THEN CASE a WHEN 1 THEN CASE a WHEN 1 THEN CASE a WHEN 1 THEN CASE a WHEN 1 THEN CASE a WHEN 1 THEN CASE a WHEN 1 THEN CASE a WHEN 1 THEN CASE a WHEN 1 THEN CASE a WHEN 1 THEN CASE a WHEN 1 THEN CASE a WHEN 1 THEN CASE a WHEN 1 THEN CASE a WHEN 1 THEN 2 END END END END END END END END END END END END END END END END END END END FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":409,"left":{"type":355,"name":"a"},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":409,"left":{"type":355,"name":"a"},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":409,"left":{"type":355,"name":"a"},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":409,"left":{"type":355,"name":"a"},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":409,"left":{"type":355,"name":"a"},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":409,"left":{"type":355,"name":"a"},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":409,"left":{"type":355,"name":"a"},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":409,"left":{"type":355,"name":"a"},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":409,"left":{"type":355,"name":"a"},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":409,"left":{"type":355,"name":"a"},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":409,"left":{"type":355,"name":"a"},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":409,"left":{"type":355,"name":"a"},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":409,"left":{"type":355,"name":"a"},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":409,"left":{"type":355,"name":"a"},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":409,"left":{"type":355,"name":"a"},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":409,"left":{"type":355,"name":"a"},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":409,"left":{"type":355,"name":"a"},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":409,"left":{"type":355,"name":"a"},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":409,"left":{"type":355,"name":"a"},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]}}]}}]}}]}}]}}]}}]}}]}}]}}]}}]}}]}}]}}]}}]}}]}}]}}]}}]}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "case-then 20": {"source":"SELECT CASE a WHEN 1 THEN CASE a WHEN 1 THEN CASE a WHEN 1 THEN CASE a WHEN 1 THEN CASE a WHEN 1 THEN CASE a WHEN 1 THEN CASE a WHEN 1 THEN CASE a WHEN 1 THEN CASE a WHEN 1 THEN CASE a WHEN 1 THEN CASE a WHEN 1 THEN CASE a WHEN 1 THEN CASE a WHEN 1 THEN CASE a WHEN 1 THEN CASE a WHEN 1 THEN CASE a WHEN 1 THEN CASE a WHEN 1 THEN CASE a WHEN 1 THEN CASE a WHEN 1 THEN CASE a WHEN 1 THEN 2 END END END END END END END END END END END END END END END END END END END END FROM r","parse":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "case-then 21": {"source":"SELECT CASE a WHEN 1 THEN CASE a WHEN 1 THEN CASE a WHEN 1 THEN CASE a WHEN 1 THEN CASE a WHEN 1 THEN CASE a WHEN 1 THEN CASE a WHEN 1 THEN CASE a WHEN 1 THEN CASE a WHEN 1 THEN CASE a WHEN 1 THEN CASE a WHEN 1 THEN CASE a WHEN 1 THEN CASE a WHEN 1 THEN CASE a WHEN 1 THEN CASE a WHEN 1 THEN CASE a WHEN 1 THEN CASE a WHEN 1 THEN CASE a WHEN 1 THEN CASE a WHEN 1 THEN CASE a WHEN 1 THEN CASE a WHEN 1 THEN 2 END END END END END END END END END END END END END END END END END END END END END FROM r","parse":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "case-then 22": {"source":"SELECT CASE a WHEN 1 THEN CASE a WHEN 1 THEN CASE a WHEN 1 THEN CASE a WHEN 1 THEN CASE a WHEN 1 THEN CASE a WHEN 1 THEN CASE a WHEN 1 THEN CASE a WHEN 1 THEN CASE a WHEN 1 THEN CASE a WHEN 1 THEN CASE a WHEN 1 THEN CASE a WHEN 1 THEN CASE a WHEN 1 THEN CASE a WHEN 1 THEN CASE a WHEN 1 THEN CASE a WHEN 1 THEN CASE a WHEN 1 THEN CASE a WHEN 1 THEN CASE a WHEN 1 THEN CASE a WHEN 1 THEN CASE a WHEN 1 THEN CASE a WHEN 1 THEN 2 END END END END END END END END END END END END END END END END END END END END END END FROM r","parse":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "case-then 23": {"source":"SELECT CASE a WHEN 1 THEN CASE a WHEN 1 THEN CASE a WHEN 1 THEN CASE a WHEN 1 THEN CASE a WHEN 1 THEN CASE a WHEN 1 THEN CASE a WHEN 1 THEN CASE a WHEN 1 THEN CASE a WHEN 1 THEN CASE a WHEN 1 THEN CASE a WHEN 1 THEN CASE a WHEN 1 THEN CASE a WHEN 1 THEN CASE a WHEN 1 THEN CASE a WHEN 1 THEN CASE a WHEN 1 THEN CASE a WHEN 1 THEN CASE a WHEN 1 THEN CASE a WHEN 1 THEN CASE a WHEN 1 THEN CASE a WHEN 1 THEN CASE a WHEN 1 THEN CASE a WHEN 1 THEN 2 END END END END END END END END END END END END END END END END END END END END END END END FROM r","parse":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "not-chain 95": {"source":"SELECT * FROM r WHERE NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT a","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":355,"name":"a"}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":355,"name":"a"}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}, + "not-chain 96": {"source":"SELECT * FROM r WHERE NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT a","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":355,"name":"a"}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":33,"right":{"type":355,"name":"a"}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}, + "not-chain 97": {"source":"SELECT * FROM r WHERE NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT a","parse":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "not-chain 98": {"source":"SELECT * FROM r WHERE NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT a","parse":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "not-chain 99": {"source":"SELECT * FROM r WHERE NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT a","parse":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "not-chain 100": {"source":"SELECT * FROM r WHERE NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT a","parse":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "minus-chain 95": {"source":"SELECT - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - a FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":355,"name":"a"}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":355,"name":"a"}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "minus-chain 96": {"source":"SELECT - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - a FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":355,"name":"a"}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":367,"right":{"type":355,"name":"a"}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "minus-chain 97": {"source":"SELECT - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - a FROM r","parse":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "minus-chain 98": {"source":"SELECT - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - a FROM r","parse":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "minus-chain 99": {"source":"SELECT - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - a FROM r","parse":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "minus-chain 100": {"source":"SELECT - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - a FROM r","parse":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "bitnot-chain 95": {"source":"SELECT ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ a FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":355,"name":"a"}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":355,"name":"a"}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "bitnot-chain 96": {"source":"SELECT ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ a FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":355,"name":"a"}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":126,"right":{"type":355,"name":"a"}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "bitnot-chain 97": {"source":"SELECT ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ a FROM r","parse":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "bitnot-chain 98": {"source":"SELECT ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ a FROM r","parse":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "bitnot-chain 99": {"source":"SELECT ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ a FROM r","parse":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "bitnot-chain 100": {"source":"SELECT ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ a FROM r","parse":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "against-chain 47": {"source":"SELECT * FROM r WHERE a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"a"}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"a"}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}, + "against-chain 48": {"source":"SELECT * FROM r WHERE a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"a"}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"a"}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}, + "against-chain 49": {"source":"SELECT * FROM r WHERE a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a","parse":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "against-chain 50": {"source":"SELECT * FROM r WHERE a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a","parse":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "against-chain 51": {"source":"SELECT * FROM r WHERE a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a","parse":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "against-chain 52": {"source":"SELECT * FROM r WHERE a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a AGAINST a","parse":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "in-nested-args 30": {"source":"SELECT * FROM r WHERE a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (1))))))))))))))))))))))))))))))","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":315,"left":{"type":355,"name":"a"},"right":[{"type":315,"left":{"type":355,"name":"a"},"right":[{"type":315,"left":{"type":355,"name":"a"},"right":[{"type":315,"left":{"type":355,"name":"a"},"right":[{"type":315,"left":{"type":355,"name":"a"},"right":[{"type":315,"left":{"type":355,"name":"a"},"right":[{"type":315,"left":{"type":355,"name":"a"},"right":[{"type":315,"left":{"type":355,"name":"a"},"right":[{"type":315,"left":{"type":355,"name":"a"},"right":[{"type":315,"left":{"type":355,"name":"a"},"right":[{"type":315,"left":{"type":355,"name":"a"},"right":[{"type":315,"left":{"type":355,"name":"a"},"right":[{"type":315,"left":{"type":355,"name":"a"},"right":[{"type":315,"left":{"type":355,"name":"a"},"right":[{"type":315,"left":{"type":355,"name":"a"},"right":[{"type":315,"left":{"type":355,"name":"a"},"right":[{"type":315,"left":{"type":355,"name":"a"},"right":[{"type":315,"left":{"type":355,"name":"a"},"right":[{"type":315,"left":{"type":355,"name":"a"},"right":[{"type":315,"left":{"type":355,"name":"a"},"right":[{"type":315,"left":{"type":355,"name":"a"},"right":[{"type":315,"left":{"type":355,"name":"a"},"right":[{"type":315,"left":{"type":355,"name":"a"},"right":[{"type":315,"left":{"type":355,"name":"a"},"right":[{"type":315,"left":{"type":355,"name":"a"},"right":[{"type":315,"left":{"type":355,"name":"a"},"right":[{"type":315,"left":{"type":355,"name":"a"},"right":[{"type":315,"left":{"type":355,"name":"a"},"right":[{"type":315,"left":{"type":355,"name":"a"},"right":[{"type":315,"left":{"type":355,"name":"a"},"right":[{"type":258,"value":"1"}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "in-nested-args 31": {"source":"SELECT * FROM r WHERE a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (1)))))))))))))))))))))))))))))))","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":315,"left":{"type":355,"name":"a"},"right":[{"type":315,"left":{"type":355,"name":"a"},"right":[{"type":315,"left":{"type":355,"name":"a"},"right":[{"type":315,"left":{"type":355,"name":"a"},"right":[{"type":315,"left":{"type":355,"name":"a"},"right":[{"type":315,"left":{"type":355,"name":"a"},"right":[{"type":315,"left":{"type":355,"name":"a"},"right":[{"type":315,"left":{"type":355,"name":"a"},"right":[{"type":315,"left":{"type":355,"name":"a"},"right":[{"type":315,"left":{"type":355,"name":"a"},"right":[{"type":315,"left":{"type":355,"name":"a"},"right":[{"type":315,"left":{"type":355,"name":"a"},"right":[{"type":315,"left":{"type":355,"name":"a"},"right":[{"type":315,"left":{"type":355,"name":"a"},"right":[{"type":315,"left":{"type":355,"name":"a"},"right":[{"type":315,"left":{"type":355,"name":"a"},"right":[{"type":315,"left":{"type":355,"name":"a"},"right":[{"type":315,"left":{"type":355,"name":"a"},"right":[{"type":315,"left":{"type":355,"name":"a"},"right":[{"type":315,"left":{"type":355,"name":"a"},"right":[{"type":315,"left":{"type":355,"name":"a"},"right":[{"type":315,"left":{"type":355,"name":"a"},"right":[{"type":315,"left":{"type":355,"name":"a"},"right":[{"type":315,"left":{"type":355,"name":"a"},"right":[{"type":315,"left":{"type":355,"name":"a"},"right":[{"type":315,"left":{"type":355,"name":"a"},"right":[{"type":315,"left":{"type":355,"name":"a"},"right":[{"type":315,"left":{"type":355,"name":"a"},"right":[{"type":315,"left":{"type":355,"name":"a"},"right":[{"type":315,"left":{"type":355,"name":"a"},"right":[{"type":315,"left":{"type":355,"name":"a"},"right":[{"type":258,"value":"1"}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "in-nested-args 32": {"source":"SELECT * FROM r WHERE a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (1))))))))))))))))))))))))))))))))","parse":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "in-nested-args 33": {"source":"SELECT * FROM r WHERE a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (1)))))))))))))))))))))))))))))))))","parse":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "in-nested-args 34": {"source":"SELECT * FROM r WHERE a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (1))))))))))))))))))))))))))))))))))","parse":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "in-nested-args 35": {"source":"SELECT * FROM r WHERE a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (a IN (1)))))))))))))))))))))))))))))))))))","parse":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "plus-right-paren 30": {"source":"SELECT a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a)))))))))))))))))))))))))))))) FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":356,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":356,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":356,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":356,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":356,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":356,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":356,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":356,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":356,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":356,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":356,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":356,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":356,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":356,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":356,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":356,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":356,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":356,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":356,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":356,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":356,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":356,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":356,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":356,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":356,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":356,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":356,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":356,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":356,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":356,"left":{"type":355,"name":"a"}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":356,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":356,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":356,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":356,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":356,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":356,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":356,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":356,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":356,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":356,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":356,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":356,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":356,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":356,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":356,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":356,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":356,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":356,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":356,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":356,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":356,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":356,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":356,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":356,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":356,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":356,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":356,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":356,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":356,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":356,"left":{"type":355,"name":"a"}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "plus-right-paren 31": {"source":"SELECT a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a))))))))))))))))))))))))))))))) FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":356,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":356,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":356,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":356,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":356,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":356,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":356,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":356,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":356,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":356,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":356,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":356,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":356,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":356,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":356,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":356,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":356,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":356,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":356,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":356,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":356,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":356,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":356,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":356,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":356,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":356,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":356,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":356,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":356,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":356,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":356,"left":{"type":355,"name":"a"}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":356,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":356,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":356,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":356,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":356,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":356,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":356,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":356,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":356,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":356,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":356,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":356,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":356,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":356,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":356,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":356,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":356,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":356,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":356,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":356,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":356,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":356,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":356,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":356,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":356,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":356,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":356,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":356,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":356,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":356,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":356,"left":{"type":355,"name":"a"}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "plus-right-paren 32": {"source":"SELECT a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a)))))))))))))))))))))))))))))))) FROM r","parse":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "plus-right-paren 33": {"source":"SELECT a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a))))))))))))))))))))))))))))))))) FROM r","parse":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "plus-right-paren 34": {"source":"SELECT a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a)))))))))))))))))))))))))))))))))) FROM r","parse":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "plus-right-paren 35": {"source":"SELECT a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a + (a))))))))))))))))))))))))))))))))))) FROM r","parse":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "notlike-chain 31": {"source":"SELECT * FROM r WHERE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"a"}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"a"}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}, + "notlike-chain 32": {"source":"SELECT * FROM r WHERE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"a"}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"a"}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}, + "notlike-chain 33": {"source":"SELECT * FROM r WHERE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a","parse":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "notlike-chain 34": {"source":"SELECT * FROM r WHERE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a","parse":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "notlike-chain 35": {"source":"SELECT * FROM r WHERE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a","parse":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "notlike-chain 36": {"source":"SELECT * FROM r WHERE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a NOT LIKE a","parse":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "parens-comma 96": {"source":"SELECT ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((,","parse":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "parens-comma 97": {"source":"SELECT (((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((,","parse":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "parens-comma 98": {"source":"SELECT ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((,","parse":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "parens-comma 99": {"source":"SELECT (((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((,","parse":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "parens-comma 100": {"source":"SELECT ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((,","parse":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "parens-comma 101": {"source":"SELECT (((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((,","parse":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "parens-from 96": {"source":"SELECT ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((FROM","parse":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "parens-from 97": {"source":"SELECT (((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((FROM","parse":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "parens-from 98": {"source":"SELECT ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((FROM","parse":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "parens-from 99": {"source":"SELECT (((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((FROM","parse":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "parens-from 100": {"source":"SELECT ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((FROM","parse":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "parens-from 101": {"source":"SELECT (((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((FROM","parse":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "parens-bracket 94": {"source":"SELECT ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((1]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]] FROM r","parse":{"outcome":"throw","value":"Scanning error before ']]]]]]]]]]]]]]]]...' when parsing: SELECT ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((1]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]] FROM r (203)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "parens-bracket 95": {"source":"SELECT (((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((1]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]] FROM r","parse":{"outcome":"throw","value":"Scanning error before ']]]]]]]]]]]]]]]]...' when parsing: SELECT (((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((1]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]] FROM r (205)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "parens-bracket 96": {"source":"SELECT ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((1]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]] FROM r","parse":{"outcome":"throw","value":"Scanning error before ']]]]]]]]]]]]]]]]...' when parsing: SELECT ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((1]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]] FROM r (207)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "parens-bracket 97": {"source":"SELECT (((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((1]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]] FROM r","parse":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "parens-bracket 98": {"source":"SELECT ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((1]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]] FROM r","parse":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "parens-bracket 99": {"source":"SELECT (((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((1]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]] FROM r","parse":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "parens-unclosed 94": {"source":"SELECT ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((1 FROM r","parse":{"outcome":"throw","value":"Syntax error, unexpected token FROM, near to ' r', when parsing: SELECT ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((1 FROM r (109)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "parens-unclosed 95": {"source":"SELECT (((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((1 FROM r","parse":{"outcome":"throw","value":"Syntax error, unexpected token FROM, near to ' r', when parsing: SELECT (((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((1 FROM r (110)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "parens-unclosed 96": {"source":"SELECT ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((1 FROM r","parse":{"outcome":"throw","value":"Syntax error, unexpected token FROM, near to ' r', when parsing: SELECT ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((1 FROM r (111)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "parens-unclosed 97": {"source":"SELECT (((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((1 FROM r","parse":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "parens-unclosed 98": {"source":"SELECT ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((1 FROM r","parse":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "parens-unclosed 99": {"source":"SELECT (((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((1 FROM r","parse":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Parsing failed, the PHQL statement is nested too deeply","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "and-chain 150": {"source":"SELECT * FROM r WHERE a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}}}}}, + "and-chain 400": {"source":"SELECT * FROM r WHERE a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a AND a","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":266,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}}}}}, + "eq-chain 150": {"source":"SELECT * FROM r WHERE a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = 1","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":258,"value":"1"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "eq-chain 400": {"source":"SELECT * FROM r WHERE a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = a = 1","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":258,"value":"1"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "like-chain 150": {"source":"SELECT * FROM r WHERE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}}}}}, + "like-chain 400": {"source":"SELECT * FROM r WHERE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a LIKE a","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":268,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}}}}}, + "between-chain 150": {"source":"SELECT * FROM r WHERE a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}}}}}, + "between-chain 400": {"source":"SELECT * FROM r WHERE a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a BETWEEN a","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":331,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}}}}}, + "is-null-chain 150": {"source":"SELECT * FROM r WHERE a IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":355,"name":"a"}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":355,"name":"a"}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}, + "is-null-chain 400": {"source":"SELECT * FROM r WHERE a IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL IS NULL","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":355,"name":"a"}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":365,"left":{"type":355,"name":"a"}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}, + "json-chain 150": {"source":"SELECT a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "json-chain 400": {"source":"SELECT a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a->a FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":406,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"a"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "column-list 150": {"source":"SELECT a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "column-list 400": {"source":"SELECT a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}},{"type":354,"column":{"type":355,"name":"a"}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "join-list 150": {"source":"SELECT * FROM r JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}},"joins":[{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}}]}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}},"joins":[{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}}]}}}}, + "join-list 400": {"source":"SELECT * FROM r JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s JOIN s","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}},"joins":[{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}}]}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}},"joins":[{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}},{"type":360,"qualified":{"type":355,"name":"s"}}]}}}}, + "when-list 150": {"source":"SELECT CASE a WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 END FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":409,"left":{"type":355,"name":"a"},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "when-list 400": {"source":"SELECT CASE a WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 WHEN 1 THEN 2 END FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":409,"left":{"type":355,"name":"a"},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "arg-list 150": {"source":"SELECT f(a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a) FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":350,"name":"f","arguments":[{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"}]}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":350,"name":"f","arguments":[{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"}]}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "arg-list 400": {"source":"SELECT f(a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a) FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":350,"name":"f","arguments":[{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"}]}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":350,"name":"f","arguments":[{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"},{"type":355,"name":"a"}]}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}} + } +} diff --git a/tests/fixtures/parity/depth.php b/tests/fixtures/parity/depth.php new file mode 100644 index 0000000..9b01418 --- /dev/null +++ b/tests/fixtures/parity/depth.php @@ -0,0 +1,101 @@ + str_repeat($s, $n); + +$subquery = static function (int $n): string { + $s = '1'; + for ($i = 0; $i < $n; $i++) { + $s = "(SELECT {$s} FROM r)"; + } + + return 'SELECT ' . $s . ' FROM r'; +}; + +$exists = static function (int $n): string { + $s = 'SELECT * FROM r'; + for ($i = 0; $i < $n; $i++) { + $s = "SELECT * FROM r WHERE EXISTS ({$s})"; + } + + return $s; +}; + +$inSubquery = static function (int $n): string { + $s = 'SELECT a FROM r'; + for ($i = 0; $i < $n; $i++) { + $s = "SELECT a FROM r WHERE a IN ({$s})"; + } + + return $s; +}; + +/** @var array $constructs name => [first overflowing N, builder] */ +$constructs = [ + 'parens-column' => [96, static fn (int $n): string => 'SELECT ' . $r('(', $n) . '1' . $r(')', $n) . ' FROM r'], + 'parens-where' => [96, static fn (int $n): string => 'SELECT * FROM r WHERE ' . $r('(', $n) . 'a' . $r(')', $n)], + 'parens-order' => [92, static fn (int $n): string => 'SELECT * FROM r ORDER BY ' . $r('(', $n) . 'a' . $r(')', $n)], + 'parens-update' => [92, static fn (int $n): string => 'UPDATE r SET a = ' . $r('(', $n) . '1' . $r(')', $n)], + 'parens-insert' => [93, static fn (int $n): string => 'INSERT INTO r VALUES (' . $r('(', $n) . '1' . $r(')', $n) . ')'], + 'parens-join-on' => [89, static fn (int $n): string => 'SELECT * FROM r JOIN s ON ' . $r('(', $n) . 'a' . $r(')', $n)], + 'subquery-column' => [31, $subquery], + 'exists' => [24, $exists], + 'in-subquery' => [19, $inSubquery], + 'fcall' => [32, static fn (int $n): string => 'SELECT ' . $r('f(', $n) . '1' . $r(')', $n) . ' FROM r'], + 'fcall-distinct' => [32, static fn (int $n): string => 'SELECT ' . $r('f(DISTINCT ', $n) . '1' . $r(')', $n) . ' FROM r'], + 'cast' => [47, static fn (int $n): string => 'SELECT ' . $r('CAST(', $n) . 'a' . $r(' AS INT)', $n) . ' FROM r'], + 'convert' => [47, static fn (int $n): string => 'SELECT ' . $r('CONVERT(', $n) . 'a' . $r(' USING utf8)', $n) . ' FROM r'], + 'case' => [93, static fn (int $n): string => 'SELECT ' . $r('CASE ', $n) . 'a' . $r(' WHEN 1 THEN 2 END', $n) . ' FROM r'], + 'case-then' => [20, static fn (int $n): string => 'SELECT ' . $r('CASE a WHEN 1 THEN ', $n) . '2' . $r(' END', $n) . ' FROM r'], + 'not-chain' => [97, static fn (int $n): string => 'SELECT * FROM r WHERE ' . $r('NOT ', $n) . 'a'], + 'minus-chain' => [97, static fn (int $n): string => 'SELECT ' . $r('- ', $n) . 'a FROM r'], + 'bitnot-chain' => [97, static fn (int $n): string => 'SELECT ' . $r('~ ', $n) . 'a FROM r'], + 'against-chain' => [49, static fn (int $n): string => 'SELECT * FROM r WHERE a' . $r(' AGAINST a', $n)], + 'in-nested-args' => [32, static fn (int $n): string => 'SELECT * FROM r WHERE ' . $r('a IN (', $n) . '1' . $r(')', $n)], + 'plus-right-paren' => [32, static fn (int $n): string => 'SELECT ' . $r('a + (', $n) . 'a' . $r(')', $n) . ' FROM r'], + 'notlike-chain' => [33, static fn (int $n): string => 'SELECT * FROM r WHERE a' . $r(' NOT LIKE a', $n)], + 'parens-comma' => [98, static fn (int $n): string => 'SELECT ' . $r('(', $n) . ','], + 'parens-from' => [98, static fn (int $n): string => 'SELECT ' . $r('(', $n) . 'FROM'], + 'parens-bracket' => [96, static fn (int $n): string => 'SELECT ' . $r('(', $n) . '1' . $r(']', $n) . ' FROM r'], + 'parens-unclosed' => [96, static fn (int $n): string => 'SELECT ' . $r('(', $n) . '1 FROM r'], +]; + +$cases = []; + +foreach ($constructs as $name => [$first, $build]) { + for ($n = $first - 2; $n <= $first + 3; $n++) { + $cases["{$name} {$n}"] = $build($n); + } +} + +$chains = [ + 'and-chain' => static fn (int $n): string => 'SELECT * FROM r WHERE a' . $r(' AND a', $n), + 'eq-chain' => static fn (int $n): string => 'SELECT * FROM r WHERE ' . $r('a = ', $n) . '1', + 'like-chain' => static fn (int $n): string => 'SELECT * FROM r WHERE a' . $r(' LIKE a', $n), + 'between-chain' => static fn (int $n): string => 'SELECT * FROM r WHERE a' . $r(' BETWEEN a', $n), + 'is-null-chain' => static fn (int $n): string => 'SELECT * FROM r WHERE a' . $r(' IS NULL', $n), + 'json-chain' => static fn (int $n): string => 'SELECT a' . $r('->a', $n) . ' FROM r', + 'column-list' => static fn (int $n): string => 'SELECT a' . $r(', a', $n) . ' FROM r', + 'join-list' => static fn (int $n): string => 'SELECT * FROM r' . $r(' JOIN s', $n), + 'when-list' => static fn (int $n): string => 'SELECT CASE a' . $r(' WHEN 1 THEN 2', $n) . ' END FROM r', + 'arg-list' => static fn (int $n): string => 'SELECT f(a' . $r(', a', $n) . ') FROM r', +]; + +foreach ($chains as $name => $build) { + foreach ([150, 400] as $n) { + $cases["{$name} {$n}"] = $build($n); + } +} + +return $cases; diff --git a/tests/fixtures/parity/empty.json b/tests/fixtures/parity/empty.json new file mode 100644 index 0000000..d1b910c --- /dev/null +++ b/tests/fixtures/parity/empty.json @@ -0,0 +1,16 @@ +{ + "generator": "ext-phalcon 5.23.0", + "cases": { + "empty": {"source":"","parse":{"outcome":"value","value":null},"parseNoLiterals":{"outcome":"value","value":null}}, + "space": {"source":" ","parse":{"outcome":"value","value":null},"parseNoLiterals":{"outcome":"value","value":null}}, + "tabs and newlines": {"source":"\n\t\r\n ","parse":{"outcome":"value","value":null},"parseNoLiterals":{"outcome":"value","value":null}}, + "nul": {"source":"\u0000","parse":{"outcome":"value","value":null},"parseNoLiterals":{"outcome":"value","value":null}}, + "nul then statement": {"source":"\u0000SELECT * FROM r","parse":{"outcome":"value","value":null},"parseNoLiterals":{"outcome":"value","value":null}}, + "space nul statement": {"source":" \u0000SELECT * FROM r","parse":{"outcome":"value","value":null},"parseNoLiterals":{"outcome":"value","value":null}}, + "nul then garbage": {"source":"\u0000\u0001\u0002","parse":{"outcome":"value","value":null},"parseNoLiterals":{"outcome":"value","value":null}}, + "control byte only": {"source":"\u0001","parse":{"outcome":"throw","value":"Scanning error before '' when parsing: \u0001 (1)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Scanning error before '' when parsing: \u0001 (1)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "single keyword": {"source":"SELECT","parse":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "single identifier": {"source":"a","parse":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "single literal": {"source":"1","parse":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}} + } +} diff --git a/tests/fixtures/parity/empty.php b/tests/fixtures/parity/empty.php new file mode 100644 index 0000000..33a83cc --- /dev/null +++ b/tests/fixtures/parity/empty.php @@ -0,0 +1,23 @@ + '', + 'space' => ' ', + 'tabs and newlines' => "\n\t\r\n ", + 'nul' => "\0", + 'nul then statement' => "\0SELECT * FROM r", + 'space nul statement' => " \0SELECT * FROM r", + 'nul then garbage' => "\0\x01\x02", + 'control byte only' => "\x01", + 'single keyword' => 'SELECT', + 'single identifier' => 'a', + 'single literal' => '1', +]; diff --git a/tests/fixtures/parity/errors.json b/tests/fixtures/parity/errors.json new file mode 100644 index 0000000..8a01480 --- /dev/null +++ b/tests/fixtures/parity/errors.json @@ -0,0 +1,149 @@ +{ + "generator": "ext-phalcon 5.23.0", + "cases": { + "syntax first token": {"source":"FROM r","parse":{"outcome":"throw","value":"Syntax error, unexpected token FROM, near to ' r', when parsing: FROM r (6)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected token FROM, near to ' r', when parsing: FROM r (6)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "syntax first token value": {"source":"r FROM r","parse":{"outcome":"throw","value":"Syntax error, unexpected token IDENTIFIER(r), near to ' FROM r', when parsing: r FROM r (8)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected token IDENTIFIER(r), near to ' FROM r', when parsing: r FROM r (8)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "syntax middle": {"source":"SELECT * FROM r WHERE = 1","parse":{"outcome":"throw","value":"Syntax error, unexpected token EQUALS, near to ' 1', when parsing: SELECT * FROM r WHERE = 1 (25)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected token EQUALS, near to ' 1', when parsing: SELECT * FROM r WHERE = 1 (25)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "syntax last byte": {"source":"SELECT * FROM r WHERE a = =","parse":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "syntax last token then space": {"source":"SELECT * FROM r WHERE a = = ","parse":{"outcome":"throw","value":"Syntax error, unexpected token EQUALS, near to ' ', when parsing: SELECT * FROM r WHERE a = = (28)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected token EQUALS, near to ' ', when parsing: SELECT * FROM r WHERE a = = (28)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "syntax last token then newline": {"source":"SELECT * FROM r WHERE a = =\n","parse":{"outcome":"throw","value":"Syntax error, unexpected token EQUALS, near to '\n', when parsing: SELECT * FROM r WHERE a = =\n (28)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected token EQUALS, near to '\n', when parsing: SELECT * FROM r WHERE a = =\n (28)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "syntax double statement": {"source":"SELECT * FROM r SELECT * FROM r","parse":{"outcome":"throw","value":"Syntax error, unexpected token SELECT, near to ' * FROM r', when parsing: SELECT * FROM r SELECT * FROM r (31)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected token SELECT, near to ' * FROM r', when parsing: SELECT * FROM r SELECT * FROM r (31)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "syntax trailing paren": {"source":"SELECT * FROM r )","parse":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "syntax trailing comma": {"source":"SELECT * FROM r,","parse":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "syntax trailing comma space": {"source":"SELECT * FROM r, ","parse":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "syntax number start": {"source":"1","parse":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "syntax paren start": {"source":"(SELECT * FROM r)","parse":{"outcome":"throw","value":"Syntax error, unexpected token (, near to 'SELECT * FROM r)', when parsing: (SELECT * FROM r) (17)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected token (, near to 'SELECT * FROM r)', when parsing: (SELECT * FROM r) (17)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "syntax unknown keyword": {"source":"FOO BAR","parse":{"outcome":"throw","value":"Syntax error, unexpected token IDENTIFIER(FOO), near to ' BAR', when parsing: FOO BAR (7)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected token IDENTIFIER(FOO), near to ' BAR', when parsing: FOO BAR (7)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "value zero": {"source":"SELECT 0 0 FROM r","parse":{"outcome":"throw","value":"Syntax error, unexpected token INTEGER(0), near to ' FROM r', when parsing: SELECT 0 0 FROM r (17)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "value empty single string": {"source":"SELECT a '' FROM r","parse":{"outcome":"throw","value":"Syntax error, unexpected token STRING(), near to ' FROM r', when parsing: SELECT a '' FROM r (18)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "value empty double string": {"source":"SELECT a \"\" FROM r","parse":{"outcome":"throw","value":"Syntax error, unexpected token STRING(), near to ' FROM r', when parsing: SELECT a \"\" FROM r (18)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "value string": {"source":"SELECT a 'x y' FROM r","parse":{"outcome":"throw","value":"Syntax error, unexpected token STRING(x y), near to ' FROM r', when parsing: SELECT a 'x y' FROM r (21)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "value string with escapes": {"source":"SELECT a 'x\\ny' FROM r","parse":{"outcome":"throw","value":"Syntax error, unexpected token STRING(x\ny), near to ' FROM r', when parsing: SELECT a 'x\\ny' FROM r (22)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "value identifier": {"source":"SELECT a b c FROM r","parse":{"outcome":"throw","value":"Syntax error, unexpected token IDENTIFIER(c), near to ' FROM r', when parsing: SELECT a b c FROM r (19)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected token IDENTIFIER(c), near to ' FROM r', when parsing: SELECT a b c FROM r (19)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "value bracket identifier": {"source":"SELECT a b [c d] FROM r","parse":{"outcome":"throw","value":"Syntax error, unexpected token IDENTIFIER(c d), near to ' FROM r', when parsing: SELECT a b [c d] FROM r (23)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected token IDENTIFIER(c d), near to ' FROM r', when parsing: SELECT a b [c d] FROM r (23)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "value double": {"source":"SELECT a 1.5 FROM r","parse":{"outcome":"throw","value":"Syntax error, unexpected token DOUBLE(1.5), near to ' FROM r', when parsing: SELECT a 1.5 FROM r (19)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "value hinteger": {"source":"SELECT a 0x1F FROM r","parse":{"outcome":"throw","value":"Syntax error, unexpected token HEXAINTEGER(0x1F), near to ' FROM r', when parsing: SELECT a 0x1F FROM r (20)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "value npl": {"source":"SELECT a ?0 FROM r","parse":{"outcome":"throw","value":"Syntax error, unexpected token NUMERIC PLACEHOLDER(?0), near to ' FROM r', when parsing: SELECT a ?0 FROM r (18)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected token NUMERIC PLACEHOLDER(?0), near to ' FROM r', when parsing: SELECT a ?0 FROM r (18)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "value spl": {"source":"SELECT a :x: FROM r","parse":{"outcome":"throw","value":"Syntax error, unexpected token STRING PLACEHOLDER(x), near to ' FROM r', when parsing: SELECT a :x: FROM r (19)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected token STRING PLACEHOLDER(x), near to ' FROM r', when parsing: SELECT a :x: FROM r (19)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "value bpl": {"source":"SELECT a {x} FROM r","parse":{"outcome":"throw","value":"Syntax error, unexpected token UNKNOWN(x), near to ' FROM r', when parsing: SELECT a {x} FROM r (19)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected token UNKNOWN(x), near to ' FROM r', when parsing: SELECT a {x} FROM r (19)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "name true": {"source":"SELECT a TRUE FROM r","parse":{"outcome":"throw","value":"Syntax error, unexpected token UNKNOWN, near to ' FROM r', when parsing: SELECT a TRUE FROM r (20)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "name false": {"source":"SELECT a FALSE FROM r","parse":{"outcome":"throw","value":"Syntax error, unexpected token UNKNOWN, near to ' FROM r', when parsing: SELECT a FALSE FROM r (21)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "name null": {"source":"SELECT a NULL FROM r","parse":{"outcome":"throw","value":"Syntax error, unexpected token NULL, near to ' FROM r', when parsing: SELECT a NULL FROM r (20)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected token NULL, near to ' FROM r', when parsing: SELECT a NULL FROM r (20)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "name not between": {"source":"SELECT NOT BETWEEN FROM r","parse":{"outcome":"throw","value":"Syntax error, unexpected token UNKNOWN, near to ' FROM r', when parsing: SELECT NOT BETWEEN FROM r (25)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected token UNKNOWN, near to ' FROM r', when parsing: SELECT NOT BETWEEN FROM r (25)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "name bitwise not": {"source":"SELECT a ~ b FROM r","parse":{"outcome":"throw","value":"Syntax error, unexpected token UNKNOWN, near to ' b FROM r', when parsing: SELECT a ~ b FROM r (19)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected token UNKNOWN, near to ' b FROM r', when parsing: SELECT a ~ b FROM r (19)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "name bitwise xor": {"source":"SELECT ^ a FROM r","parse":{"outcome":"throw","value":"Syntax error, unexpected token UNKNOWN, near to ' a FROM r', when parsing: SELECT ^ a FROM r (17)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected token UNKNOWN, near to ' a FROM r', when parsing: SELECT ^ a FROM r (17)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "name mod": {"source":"SELECT % a FROM r","parse":{"outcome":"throw","value":"Syntax error, unexpected token %%, near to ' a FROM r', when parsing: SELECT % a FROM r (17)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected token %%, near to ' a FROM r', when parsing: SELECT % a FROM r (17)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "name every operator start": {"source":"SELECT + FROM r","parse":{"outcome":"throw","value":"Syntax error, unexpected token +, near to ' FROM r', when parsing: SELECT + FROM r (15)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected token +, near to ' FROM r', when parsing: SELECT + FROM r (15)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "name dot": {"source":"SELECT . a FROM r","parse":{"outcome":"throw","value":"Syntax error, unexpected token DOT, near to ' a FROM r', when parsing: SELECT . a FROM r (17)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected token DOT, near to ' a FROM r', when parsing: SELECT . a FROM r (17)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "name json": {"source":"SELECT ->> a FROM r","parse":{"outcome":"throw","value":"Syntax error, unexpected token ->>, near to ' a FROM r', when parsing: SELECT ->> a FROM r (19)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected token ->>, near to ' a FROM r', when parsing: SELECT ->> a FROM r (19)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "name pg": {"source":"SELECT @@ a FROM r","parse":{"outcome":"throw","value":"Syntax error, unexpected token @@, near to ' a FROM r', when parsing: SELECT @@ a FROM r (18)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected token @@, near to ' a FROM r', when parsing: SELECT @@ a FROM r (18)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "name keyword": {"source":"SELECT WHERE FROM r","parse":{"outcome":"throw","value":"Syntax error, unexpected token WHERE, near to ' FROM r', when parsing: SELECT WHERE FROM r (19)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected token WHERE, near to ' FROM r', when parsing: SELECT WHERE FROM r (19)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "name for": {"source":"SELECT * FROM r FOR","parse":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "name for select": {"source":"SELECT * FROM r FOR SELECT","parse":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "value near text with nul": {"source":"SELECT a b\u0000c FROM r","parse":{"outcome":"throw","value":"Syntax error, unexpected token IDENTIFIER, near to 'c FROM r', when parsing: SELECT a b (19)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected token IDENTIFIER, near to 'c FROM r', when parsing: SELECT a b (19)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "value utf8 string": {"source":"SELECT 'ü' 'ü' FROM r","parse":{"outcome":"throw","value":"Syntax error, unexpected token STRING(ü), near to ' FROM r', when parsing: SELECT 'ü' 'ü' FROM r (23)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "eof select": {"source":"SELECT","parse":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "eof select star": {"source":"SELECT *","parse":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "eof select from": {"source":"SELECT * FROM","parse":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "eof where": {"source":"SELECT * FROM r WHERE","parse":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "eof where space": {"source":"SELECT * FROM r WHERE ","parse":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "eof binary": {"source":"SELECT * FROM r WHERE a +","parse":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "eof order": {"source":"SELECT * FROM r ORDER","parse":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "eof order by": {"source":"SELECT * FROM r ORDER BY","parse":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "eof insert": {"source":"INSERT","parse":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "eof insert into": {"source":"INSERT INTO r","parse":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "eof insert values": {"source":"INSERT INTO r VALUES","parse":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "eof insert values paren": {"source":"INSERT INTO r VALUES (","parse":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "eof update set": {"source":"UPDATE r SET","parse":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "eof update set item": {"source":"UPDATE r SET a","parse":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "eof delete": {"source":"DELETE","parse":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "eof delete from where": {"source":"DELETE FROM r WHERE","parse":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "eof fcall": {"source":"SELECT f(","parse":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "eof case": {"source":"SELECT CASE a WHEN 1 THEN 2","parse":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "eof cast": {"source":"SELECT CAST(a AS","parse":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "is followed by literal": {"source":"SELECT * FROM r WHERE a IS 1","parse":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "is not followed by literal": {"source":"SELECT * FROM r WHERE a IS NOT 1","parse":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "limit identifier": {"source":"SELECT * FROM r LIMIT a","parse":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "limit comma identifier": {"source":"SELECT * FROM r LIMIT 1, a","parse":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "limit offset identifier": {"source":"SELECT * FROM r LIMIT 1 OFFSET a","parse":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "limit twice": {"source":"SELECT * FROM r LIMIT 1 LIMIT 2","parse":{"outcome":"throw","value":"Syntax error, unexpected token LIMIT, near to ' 2', when parsing: SELECT * FROM r LIMIT 1 LIMIT 2 (31)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "offset without limit": {"source":"SELECT * FROM r OFFSET 1","parse":{"outcome":"throw","value":"Syntax error, unexpected token OFFSET, near to ' 1', when parsing: SELECT * FROM r OFFSET 1 (24)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected token OFFSET, near to ' 1', when parsing: SELECT * FROM r OFFSET 1 (24)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "update limit comma": {"source":"UPDATE r SET a = 1 LIMIT 1, 2","parse":{"outcome":"throw","value":"Syntax error, unexpected token COMMA, near to ' 2', when parsing: UPDATE r SET a = 1 LIMIT 1, 2 (29)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "join without table": {"source":"SELECT * FROM r JOIN","parse":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "join on without expr": {"source":"SELECT * FROM r JOIN s ON","parse":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "left without join": {"source":"SELECT * FROM r LEFT s","parse":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "outer join": {"source":"SELECT * FROM r OUTER JOIN s","parse":{"outcome":"throw","value":"Syntax error, unexpected token OUTER, near to ' JOIN s', when parsing: SELECT * FROM r OUTER JOIN s (28)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected token OUTER, near to ' JOIN s', when parsing: SELECT * FROM r OUTER JOIN s (28)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "inner outer join": {"source":"SELECT * FROM r INNER OUTER JOIN s","parse":{"outcome":"throw","value":"Syntax error, unexpected token OUTER, near to ' JOIN s', when parsing: SELECT * FROM r INNER OUTER JOIN s (34)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected token OUTER, near to ' JOIN s', when parsing: SELECT * FROM r INNER OUTER JOIN s (34)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cast literal type": {"source":"SELECT CAST(a AS 1) FROM r","parse":{"outcome":"throw","value":"Syntax error, unexpected token INTEGER(1), near to ') FROM r', when parsing: SELECT CAST(a AS 1) FROM r (26)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cast without as": {"source":"SELECT CAST(a) FROM r","parse":{"outcome":"throw","value":"Syntax error, unexpected token ), near to ' FROM r', when parsing: SELECT CAST(a) FROM r (21)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected token ), near to ' FROM r', when parsing: SELECT CAST(a) FROM r (21)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "convert with as": {"source":"SELECT CONVERT(a AS b) FROM r","parse":{"outcome":"throw","value":"Syntax error, unexpected token AS, near to ' b) FROM r', when parsing: SELECT CONVERT(a AS b) FROM r (29)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected token AS, near to ' b) FROM r', when parsing: SELECT CONVERT(a AS b) FROM r (29)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "case without operand": {"source":"SELECT CASE END FROM r","parse":{"outcome":"throw","value":"Syntax error, unexpected token END, near to ' FROM r', when parsing: SELECT CASE END FROM r (22)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected token END, near to ' FROM r', when parsing: SELECT CASE END FROM r (22)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "case without when": {"source":"SELECT CASE a END FROM r","parse":{"outcome":"throw","value":"Syntax error, unexpected token END, near to ' FROM r', when parsing: SELECT CASE a END FROM r (24)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected token END, near to ' FROM r', when parsing: SELECT CASE a END FROM r (24)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "case when without then": {"source":"SELECT CASE a WHEN 1 END FROM r","parse":{"outcome":"throw","value":"Syntax error, unexpected token END, near to ' FROM r', when parsing: SELECT CASE a WHEN 1 END FROM r (31)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "fcall comma only": {"source":"SELECT f(,) FROM r","parse":{"outcome":"throw","value":"Syntax error, unexpected token COMMA, near to ') FROM r', when parsing: SELECT f(,) FROM r (18)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected token COMMA, near to ') FROM r', when parsing: SELECT f(,) FROM r (18)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "fcall trailing comma": {"source":"SELECT f(a,) FROM r","parse":{"outcome":"throw","value":"Syntax error, unexpected token ), near to ' FROM r', when parsing: SELECT f(a,) FROM r (19)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected token ), near to ' FROM r', when parsing: SELECT f(a,) FROM r (19)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "fcall distinct twice": {"source":"SELECT f(DISTINCT DISTINCT a) FROM r","parse":{"outcome":"throw","value":"Syntax error, unexpected token DISTINCT, near to ' a) FROM r', when parsing: SELECT f(DISTINCT DISTINCT a) FROM r (36)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected token DISTINCT, near to ' a) FROM r', when parsing: SELECT f(DISTINCT DISTINCT a) FROM r (36)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "qualified trailing dot": {"source":"SELECT a. FROM r","parse":{"outcome":"throw","value":"Syntax error, unexpected token FROM, near to ' r', when parsing: SELECT a. FROM r (16)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected token FROM, near to ' r', when parsing: SELECT a. FROM r (16)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "qualified three parts": {"source":"SELECT a.b.c FROM r","parse":{"outcome":"throw","value":"Syntax error, unexpected token DOT, near to 'c FROM r', when parsing: SELECT a.b.c FROM r (19)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected token DOT, near to 'c FROM r', when parsing: SELECT a.b.c FROM r (19)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "qualified dot star alias": {"source":"SELECT a.* AS x FROM r","parse":{"outcome":"throw","value":"Syntax error, unexpected token AS, near to ' x FROM r', when parsing: SELECT a.* AS x FROM r (22)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected token AS, near to ' x FROM r', when parsing: SELECT a.* AS x FROM r (22)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "star alias": {"source":"SELECT * AS x FROM r","parse":{"outcome":"throw","value":"Syntax error, unexpected token AS, near to ' x FROM r', when parsing: SELECT * AS x FROM r (20)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected token AS, near to ' x FROM r', when parsing: SELECT * AS x FROM r (20)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "star in expr": {"source":"SELECT * + 1 FROM r","parse":{"outcome":"throw","value":"Syntax error, unexpected token +, near to ' 1 FROM r', when parsing: SELECT * + 1 FROM r (19)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected token +, near to ' 1 FROM r', when parsing: SELECT * + 1 FROM r (19)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "in without parens": {"source":"SELECT * FROM r WHERE a IN 1","parse":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "in subquery trailing": {"source":"SELECT * FROM r WHERE a IN (SELECT b FROM s, )","parse":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "not in without parens": {"source":"SELECT * FROM r WHERE a NOT IN 1","parse":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "exists without subquery": {"source":"SELECT * FROM r WHERE EXISTS (1)","parse":{"outcome":"throw","value":"Syntax error, unexpected token INTEGER(1), near to ')', when parsing: SELECT * FROM r WHERE EXISTS (1) (32)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "subquery insert": {"source":"SELECT * FROM r WHERE a = (INSERT INTO s VALUES (1))","parse":{"outcome":"throw","value":"Syntax error, unexpected token INSERT, near to ' INTO s VALUES (1))', when parsing: SELECT * FROM r WHERE a = (INSERT INTO s VALUES (1)) (52)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected token INSERT, near to ' INTO s VALUES (1))', when parsing: SELECT * FROM r WHERE a = (INSERT INTO s VALUES (1)) (52)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "from subquery": {"source":"SELECT * FROM (SELECT * FROM r)","parse":{"outcome":"throw","value":"Syntax error, unexpected token (, near to 'SELECT * FROM r)', when parsing: SELECT * FROM (SELECT * FROM r) (31)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected token (, near to 'SELECT * FROM r)', when parsing: SELECT * FROM (SELECT * FROM r) (31)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "with without item": {"source":"SELECT * FROM r WITH","parse":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "with empty list": {"source":"SELECT * FROM r WITH ()","parse":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "with qualified": {"source":"SELECT * FROM r WITH a.b","parse":{"outcome":"throw","value":"Syntax error, unexpected token DOT, near to 'b', when parsing: SELECT * FROM r WITH a.b (24)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected token DOT, near to 'b', when parsing: SELECT * FROM r WITH a.b (24)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "insert empty values": {"source":"INSERT INTO r VALUES ()","parse":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "insert empty fields": {"source":"INSERT INTO r () VALUES (1)","parse":{"outcome":"throw","value":"Syntax error, unexpected token ), near to ' VALUES (1)', when parsing: INSERT INTO r () VALUES (1) (27)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected token ), near to ' VALUES (1)', when parsing: INSERT INTO r () VALUES (1) (27)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "insert qualified field": {"source":"INSERT INTO r (a.b) VALUES (1)","parse":{"outcome":"throw","value":"Syntax error, unexpected token DOT, near to 'b) VALUES (1)', when parsing: INSERT INTO r (a.b) VALUES (1) (30)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected token DOT, near to 'b) VALUES (1)', when parsing: INSERT INTO r (a.b) VALUES (1) (30)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "insert star": {"source":"INSERT INTO r VALUES (*)","parse":{"outcome":"throw","value":"Syntax error, unexpected token *, near to ')', when parsing: INSERT INTO r VALUES (*) (24)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected token *, near to ')', when parsing: INSERT INTO r VALUES (*) (24)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "insert select": {"source":"INSERT INTO r SELECT * FROM s","parse":{"outcome":"throw","value":"Syntax error, unexpected token SELECT, near to ' * FROM s', when parsing: INSERT INTO r SELECT * FROM s (29)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected token SELECT, near to ' * FROM s', when parsing: INSERT INTO r SELECT * FROM s (29)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "update without set": {"source":"UPDATE r WHERE a = 1","parse":{"outcome":"throw","value":"Syntax error, unexpected token WHERE, near to ' a = 1', when parsing: UPDATE r WHERE a = 1 (20)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected token WHERE, near to ' a = 1', when parsing: UPDATE r WHERE a = 1 (20)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "update trailing comma": {"source":"UPDATE r SET a = 1,","parse":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "update order by": {"source":"UPDATE r SET a = 1 ORDER BY a","parse":{"outcome":"throw","value":"Syntax error, unexpected token ORDER, near to ' BY a', when parsing: UPDATE r SET a = 1 ORDER BY a (29)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "delete without from": {"source":"DELETE r","parse":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "delete order by": {"source":"DELETE FROM r ORDER BY a","parse":{"outcome":"throw","value":"Syntax error, unexpected token ORDER, near to ' BY a', when parsing: DELETE FROM r ORDER BY a (24)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected token ORDER, near to ' BY a', when parsing: DELETE FROM r ORDER BY a (24)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "delete star": {"source":"DELETE * FROM r","parse":{"outcome":"throw","value":"Syntax error, unexpected token *, near to ' FROM r', when parsing: DELETE * FROM r (15)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected token *, near to ' FROM r', when parsing: DELETE * FROM r (15)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "group by empty": {"source":"SELECT * FROM r GROUP BY","parse":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "order by trailing comma": {"source":"SELECT * FROM r ORDER BY a,","parse":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "order by asc asc": {"source":"SELECT * FROM r ORDER BY a ASC ASC","parse":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "between without and": {"source":"SELECT * FROM r WHERE a BETWEEN 1","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":331,"left":{"type":355,"name":"a"},"right":{"type":258,"value":"1"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "not alone in where": {"source":"SELECT * FROM r WHERE NOT","parse":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "double not between": {"source":"SELECT * FROM r WHERE a NOT NOT BETWEEN 1 AND 2","parse":{"outcome":"throw","value":"Syntax error, unexpected token UNKNOWN, near to ' 1 AND 2', when parsing: SELECT * FROM r WHERE a NOT NOT BETWEEN 1 AND 2 (47)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected token UNKNOWN, near to ' 1 AND 2', when parsing: SELECT * FROM r WHERE a NOT NOT BETWEEN 1 AND 2 (47)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "scan first byte short": {"source":"\u0001 abc","parse":{"outcome":"throw","value":"Scanning error before ' abc' when parsing: \u0001 abc (5)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Scanning error before ' abc' when parsing: \u0001 abc (5)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "scan first byte long": {"source":"\u0001bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb","parse":{"outcome":"throw","value":"Scanning error before 'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb' when parsing: \u0001bbbbbbbbbbbbbbbbbbbbbbbb","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Scanning error before 'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb' when parsing: \u0001bbbbbbbbbbbbbbbbbbbbbbbb","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "scan remaining 15": {"source":"SELECT a\u0001bbbbbbbbbbbbbb","parse":{"outcome":"throw","value":"Scanning error before 'bbbbbbbbbbbbbb' when parsing: SELECT a\u0001bbbbbbbbbbbbbb (23)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Scanning error before 'bbbbbbbbbbbbbb' when parsing: SELECT a\u0001bbbbbbbbbbbbbb (23)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "scan remaining 16": {"source":"SELECT a\u0001bbbbbbbbbbbbbbb","parse":{"outcome":"throw","value":"Scanning error before 'bbbbbbbbbbbbbbb' when parsing: SELECT a\u0001bbbbbbbbbbbbbbb (24)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Scanning error before 'bbbbbbbbbbbbbbb' when parsing: SELECT a\u0001bbbbbbbbbbbbbbb (24)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "scan remaining 17": {"source":"SELECT a\u0001bbbbbbbbbbbbbbbb","parse":{"outcome":"throw","value":"Scanning error before 'bbbbbbbbbbbbbbbb...' when parsing: SELECT a\u0001bbbbbbbbbbbbbbbb (25)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Scanning error before 'bbbbbbbbbbbbbbbb...' when parsing: SELECT a\u0001bbbbbbbbbbbbbbbb (25)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "scan remaining 18": {"source":"SELECT a\u0001bbbbbbbbbbbbbbbbb","parse":{"outcome":"throw","value":"Scanning error before 'bbbbbbbbbbbbbbbb...' when parsing: SELECT a\u0001bbbbbbbbbbbbbbbbb (26)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Scanning error before 'bbbbbbbbbbbbbbbb...' when parsing: SELECT a\u0001bbbbbbbbbbbbbbbbb (26)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "scan after whitespace 16": {"source":"SELECT a \u0001bbbbbbbbbbbbbbb","parse":{"outcome":"throw","value":"Scanning error before 'bbbbbbbbbbbbbbb' when parsing: SELECT a \u0001bbbbbbbbbbbbbbb (25)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Scanning error before 'bbbbbbbbbbbbbbb' when parsing: SELECT a \u0001bbbbbbbbbbbbbbb (25)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "scan after whitespace 17": {"source":"SELECT a \u0001bbbbbbbbbbbbbbbb","parse":{"outcome":"throw","value":"Scanning error before 'bbbbbbbbbbbbbbbb...' when parsing: SELECT a \u0001bbbbbbbbbbbbbbbb (26)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Scanning error before 'bbbbbbbbbbbbbbbb...' when parsing: SELECT a \u0001bbbbbbbbbbbbbbbb (26)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "scan last byte": {"source":"SELECT a\u0001","parse":{"outcome":"throw","value":"Scanning error before '' when parsing: SELECT a\u0001 (9)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Scanning error before '' when parsing: SELECT a\u0001 (9)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "scan utf8 split": {"source":"SELECT a\u0001aéééééééé","parse":{"outcome":"throw","value":"U2Nhbm5pbmcgZXJyb3IgYmVmb3JlICdhw6nDqcOpw6nDqcOpw6nDLi4uJyB3aGVuIHBhcnNpbmc6IFNFTEVDVCBhAWHDqcOpw6nDqcOpw6nDqcOpICgyNik=","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"U2Nhbm5pbmcgZXJyb3IgYmVmb3JlICdhw6nDqcOpw6nDqcOpw6nDLi4uJyB3aGVuIHBhcnNpbmc6IFNFTEVDVCBhAWHDqcOpw6nDqcOpw6nDqcOpICgyNik=","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "scan utf8 lead byte": {"source":"SELECT ü FROM r","parse":{"outcome":"throw","value":"U2Nhbm5pbmcgZXJyb3IgYmVmb3JlICe8IEZST00gcicgd2hlbiBwYXJzaW5nOiBTRUxFQ1Qgw7wgRlJPTSByICgxNik=","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"U2Nhbm5pbmcgZXJyb3IgYmVmb3JlICe8IEZST00gcicgd2hlbiBwYXJzaW5nOiBTRUxFQ1Qgw7wgRlJPTSByICgxNik=","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "scan string unterminated short": {"source":"SELECT 'abc","parse":{"outcome":"throw","value":"Scanning error before 'abc' when parsing: SELECT 'abc (11)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Scanning error before 'abc' when parsing: SELECT 'abc (11)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "scan string unterminated long": {"source":"SELECT 'abcdefghijklmnopqrstuvwxyz","parse":{"outcome":"throw","value":"Scanning error before 'abcdefghijklmnop...' when parsing: SELECT 'abcdefghijklmnopqrstuvwxyz (34)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Scanning error before 'abcdefghijklmnop...' when parsing: SELECT 'abcdefghijklmnopqrstuvwxyz (34)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "scan string trailing backslash": {"source":"SELECT * FROM r WHERE a = 'abc\\'","parse":{"outcome":"throw","value":"Scanning error before 'abc\\'' when parsing: SELECT * FROM r WHERE a = 'abc\\' (32)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Scanning error before 'abc\\'' when parsing: SELECT * FROM r WHERE a = 'abc\\' (32)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "scan bracket unterminated long": {"source":"SELECT [abcdefghijklmnopqrstuvwxyz","parse":{"outcome":"throw","value":"Scanning error before 'abcdefghijklmnop...' when parsing: SELECT [abcdefghijklmnopqrstuvwxyz (34)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Scanning error before 'abcdefghijklmnop...' when parsing: SELECT [abcdefghijklmnopqrstuvwxyz (34)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "scan hash": {"source":"SELECT # FROM r","parse":{"outcome":"throw","value":"Scanning error before ' FROM r' when parsing: SELECT # FROM r (15)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Scanning error before ' FROM r' when parsing: SELECT # FROM r (15)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "scan at": {"source":"SELECT @ FROM r","parse":{"outcome":"throw","value":"Scanning error before ' FROM r' when parsing: SELECT @ FROM r (15)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Scanning error before ' FROM r' when parsing: SELECT @ FROM r (15)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "scan bang": {"source":"SELECT ! FROM r","parse":{"outcome":"throw","value":"Syntax error, unexpected token FROM, near to ' r', when parsing: SELECT ! FROM r (15)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected token FROM, near to ' r', when parsing: SELECT ! FROM r (15)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "scan semicolon": {"source":"SELECT * FROM r; DELETE FROM r","parse":{"outcome":"throw","value":"Scanning error before ' DELETE FROM r' when parsing: SELECT * FROM r; DELETE FROM r (30)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Scanning error before ' DELETE FROM r' when parsing: SELECT * FROM r; DELETE FROM r (30)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "scan after syntax error": {"source":"SELECT a b \u0001","parse":{"outcome":"throw","value":"Scanning error before '' when parsing: SELECT a b \u0001 (12)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Scanning error before '' when parsing: SELECT a b \u0001 (12)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "scan before syntax error": {"source":"SELECT \u0001 a b","parse":{"outcome":"throw","value":"Scanning error before ' a b' when parsing: SELECT \u0001 a b (12)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Scanning error before ' a b' when parsing: SELECT \u0001 a b (12)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "unknown opcode colon": {"source":"SELECT : FROM r","parse":{"outcome":"throw","value":"Scanner: Unknown opcode 58","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Scanner: Unknown opcode 58","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "unknown opcode colon at start": {"source":":","parse":{"outcome":"throw","value":"Scanner: Unknown opcode 58","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Scanner: Unknown opcode 58","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "unknown opcode after error": {"source":"SELECT a b :","parse":{"outcome":"throw","value":"Scanner: Unknown opcode 58","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Scanner: Unknown opcode 58","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "literal then syntax error": {"source":"SELECT 1 2 FROM r","parse":{"outcome":"throw","value":"Syntax error, unexpected token INTEGER(2), near to ' FROM r', when parsing: SELECT 1 2 FROM r (17)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "literal after syntax error": {"source":"SELECT a b 1 FROM r","parse":{"outcome":"throw","value":"Syntax error, unexpected token INTEGER(1), near to ' FROM r', when parsing: SELECT a b 1 FROM r (19)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "literal then scan error": {"source":"SELECT 1 \u0001","parse":{"outcome":"throw","value":"Scanning error before '' when parsing: SELECT 1 \u0001 (10)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "literal in limit": {"source":"SELECT * FROM r LIMIT 10","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"limit":{"number":{"type":258,"value":"10"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "literal true in where": {"source":"SELECT * FROM r WHERE a = TRUE","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":61,"left":{"type":355,"name":"a"},"right":{"type":334}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "literal null in where": {"source":"SELECT * FROM r WHERE a = NULL","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":61,"left":{"type":355,"name":"a"},"right":{"type":322}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":61,"left":{"type":355,"name":"a"},"right":{"type":322}}}}}, + "placeholders only": {"source":"SELECT * FROM r WHERE a = :a: LIMIT :l:","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":61,"left":{"type":355,"name":"a"},"right":{"type":274,"value":"a"}},"limit":{"number":{"type":274,"value":"l"}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":61,"left":{"type":355,"name":"a"},"right":{"type":274,"value":"a"}},"limit":{"number":{"type":274,"value":"l"}}}}} + } +} diff --git a/tests/fixtures/parity/errors.php b/tests/fixtures/parity/errors.php new file mode 100644 index 0000000..858f70b --- /dev/null +++ b/tests/fixtures/parity/errors.php @@ -0,0 +1,170 @@ + str_repeat('b', $n); + +return [ + // position of the offending token + 'syntax first token' => 'FROM r', + 'syntax first token value' => 'r FROM r', + 'syntax middle' => 'SELECT * FROM r WHERE = 1', + 'syntax last byte' => 'SELECT * FROM r WHERE a = =', + 'syntax last token then space' => 'SELECT * FROM r WHERE a = = ', + 'syntax last token then newline' => "SELECT * FROM r WHERE a = =\n", + 'syntax double statement' => 'SELECT * FROM r SELECT * FROM r', + 'syntax trailing paren' => 'SELECT * FROM r )', + 'syntax trailing comma' => 'SELECT * FROM r,', + 'syntax trailing comma space' => 'SELECT * FROM r, ', + 'syntax number start' => '1', + 'syntax paren start' => '(SELECT * FROM r)', + 'syntax unknown keyword' => 'FOO BAR', + + // printed token names and values + 'value zero' => 'SELECT 0 0 FROM r', + 'value empty single string' => "SELECT a '' FROM r", + 'value empty double string' => 'SELECT a "" FROM r', + 'value string' => "SELECT a 'x y' FROM r", + 'value string with escapes' => "SELECT a 'x\\ny' FROM r", + 'value identifier' => 'SELECT a b c FROM r', + 'value bracket identifier' => 'SELECT a b [c d] FROM r', + 'value double' => 'SELECT a 1.5 FROM r', + 'value hinteger' => 'SELECT a 0x1F FROM r', + 'value npl' => 'SELECT a ?0 FROM r', + 'value spl' => 'SELECT a :x: FROM r', + 'value bpl' => 'SELECT a {x} FROM r', + 'name true' => 'SELECT a TRUE FROM r', + 'name false' => 'SELECT a FALSE FROM r', + 'name null' => 'SELECT a NULL FROM r', + 'name not between' => 'SELECT NOT BETWEEN FROM r', + 'name bitwise not' => 'SELECT a ~ b FROM r', + 'name bitwise xor' => 'SELECT ^ a FROM r', + 'name mod' => 'SELECT % a FROM r', + 'name every operator start' => 'SELECT + FROM r', + 'name dot' => 'SELECT . a FROM r', + 'name json' => 'SELECT ->> a FROM r', + 'name pg' => 'SELECT @@ a FROM r', + 'name keyword' => 'SELECT WHERE FROM r', + 'name for' => 'SELECT * FROM r FOR', + 'name for select' => 'SELECT * FROM r FOR SELECT', + 'value near text with nul' => "SELECT a b\0c FROM r", + 'value utf8 string' => "SELECT 'ü' 'ü' FROM r", + + // statements cut short + 'eof select' => 'SELECT', + 'eof select star' => 'SELECT *', + 'eof select from' => 'SELECT * FROM', + 'eof where' => 'SELECT * FROM r WHERE', + 'eof where space' => 'SELECT * FROM r WHERE ', + 'eof binary' => 'SELECT * FROM r WHERE a +', + 'eof order' => 'SELECT * FROM r ORDER', + 'eof order by' => 'SELECT * FROM r ORDER BY', + 'eof insert' => 'INSERT', + 'eof insert into' => 'INSERT INTO r', + 'eof insert values' => 'INSERT INTO r VALUES', + 'eof insert values paren' => 'INSERT INTO r VALUES (', + 'eof update set' => 'UPDATE r SET', + 'eof update set item' => 'UPDATE r SET a', + 'eof delete' => 'DELETE', + 'eof delete from where' => 'DELETE FROM r WHERE', + 'eof fcall' => 'SELECT f(', + 'eof case' => 'SELECT CASE a WHEN 1 THEN 2', + 'eof cast' => 'SELECT CAST(a AS', + + // invalid constructs + 'is followed by literal' => 'SELECT * FROM r WHERE a IS 1', + 'is not followed by literal' => 'SELECT * FROM r WHERE a IS NOT 1', + 'limit identifier' => 'SELECT * FROM r LIMIT a', + 'limit comma identifier' => 'SELECT * FROM r LIMIT 1, a', + 'limit offset identifier' => 'SELECT * FROM r LIMIT 1 OFFSET a', + 'limit twice' => 'SELECT * FROM r LIMIT 1 LIMIT 2', + 'offset without limit' => 'SELECT * FROM r OFFSET 1', + 'update limit comma' => 'UPDATE r SET a = 1 LIMIT 1, 2', + 'join without table' => 'SELECT * FROM r JOIN', + 'join on without expr' => 'SELECT * FROM r JOIN s ON', + 'left without join' => 'SELECT * FROM r LEFT s', + 'outer join' => 'SELECT * FROM r OUTER JOIN s', + 'inner outer join' => 'SELECT * FROM r INNER OUTER JOIN s', + 'cast literal type' => 'SELECT CAST(a AS 1) FROM r', + 'cast without as' => 'SELECT CAST(a) FROM r', + 'convert with as' => 'SELECT CONVERT(a AS b) FROM r', + 'case without operand' => 'SELECT CASE END FROM r', + 'case without when' => 'SELECT CASE a END FROM r', + 'case when without then' => 'SELECT CASE a WHEN 1 END FROM r', + 'fcall comma only' => 'SELECT f(,) FROM r', + 'fcall trailing comma' => 'SELECT f(a,) FROM r', + 'fcall distinct twice' => 'SELECT f(DISTINCT DISTINCT a) FROM r', + 'qualified trailing dot' => 'SELECT a. FROM r', + 'qualified three parts' => 'SELECT a.b.c FROM r', + 'qualified dot star alias' => 'SELECT a.* AS x FROM r', + 'star alias' => 'SELECT * AS x FROM r', + 'star in expr' => 'SELECT * + 1 FROM r', + 'in without parens' => 'SELECT * FROM r WHERE a IN 1', + 'in subquery trailing' => 'SELECT * FROM r WHERE a IN (SELECT b FROM s, )', + 'not in without parens' => 'SELECT * FROM r WHERE a NOT IN 1', + 'exists without subquery' => 'SELECT * FROM r WHERE EXISTS (1)', + 'subquery insert' => 'SELECT * FROM r WHERE a = (INSERT INTO s VALUES (1))', + 'from subquery' => 'SELECT * FROM (SELECT * FROM r)', + 'with without item' => 'SELECT * FROM r WITH', + 'with empty list' => 'SELECT * FROM r WITH ()', + 'with qualified' => 'SELECT * FROM r WITH a.b', + 'insert empty values' => 'INSERT INTO r VALUES ()', + 'insert empty fields' => 'INSERT INTO r () VALUES (1)', + 'insert qualified field' => 'INSERT INTO r (a.b) VALUES (1)', + 'insert star' => 'INSERT INTO r VALUES (*)', + 'insert select' => 'INSERT INTO r SELECT * FROM s', + 'update without set' => 'UPDATE r WHERE a = 1', + 'update trailing comma' => 'UPDATE r SET a = 1,', + 'update order by' => 'UPDATE r SET a = 1 ORDER BY a', + 'delete without from' => 'DELETE r', + 'delete order by' => 'DELETE FROM r ORDER BY a', + 'delete star' => 'DELETE * FROM r', + 'group by empty' => 'SELECT * FROM r GROUP BY', + 'order by trailing comma' => 'SELECT * FROM r ORDER BY a,', + 'order by asc asc' => 'SELECT * FROM r ORDER BY a ASC ASC', + 'between without and' => 'SELECT * FROM r WHERE a BETWEEN 1', + 'not alone in where' => 'SELECT * FROM r WHERE NOT', + 'double not between' => 'SELECT * FROM r WHERE a NOT NOT BETWEEN 1 AND 2', + + // scanning errors: 16-byte cut uses the previous token's start_length + 'scan first byte short' => "\x01 abc", + 'scan first byte long' => "\x01" . $rest(30), + 'scan remaining 15' => "SELECT a\x01" . $rest(14), + 'scan remaining 16' => "SELECT a\x01" . $rest(15), + 'scan remaining 17' => "SELECT a\x01" . $rest(16), + 'scan remaining 18' => "SELECT a\x01" . $rest(17), + 'scan after whitespace 16' => "SELECT a \x01" . $rest(15), + 'scan after whitespace 17' => "SELECT a \x01" . $rest(16), + 'scan last byte' => "SELECT a\x01", + 'scan utf8 split' => "SELECT a\x01" . 'aéééééééé', + 'scan utf8 lead byte' => 'SELECT ü FROM r', + 'scan string unterminated short' => "SELECT 'abc", + 'scan string unterminated long' => "SELECT 'abcdefghijklmnopqrstuvwxyz", + 'scan string trailing backslash' => "SELECT * FROM r WHERE a = 'abc\\'", + 'scan bracket unterminated long' => 'SELECT [abcdefghijklmnopqrstuvwxyz', + 'scan hash' => 'SELECT # FROM r', + 'scan at' => 'SELECT @ FROM r', + 'scan bang' => 'SELECT ! FROM r', + 'scan semicolon' => 'SELECT * FROM r; DELETE FROM r', + 'scan after syntax error' => "SELECT a b \x01", + 'scan before syntax error' => "SELECT \x01 a b", + 'unknown opcode colon' => 'SELECT : FROM r', + 'unknown opcode colon at start' => ':', + 'unknown opcode after error' => 'SELECT a b :', + + // literals interplay (also run with literals disabled by the harness) + 'literal then syntax error' => 'SELECT 1 2 FROM r', + 'literal after syntax error' => 'SELECT a b 1 FROM r', + 'literal then scan error' => "SELECT 1 \x01", + 'literal in limit' => 'SELECT * FROM r LIMIT 10', + 'literal true in where' => 'SELECT * FROM r WHERE a = TRUE', + 'literal null in where' => 'SELECT * FROM r WHERE a = NULL', + 'placeholders only' => 'SELECT * FROM r WHERE a = :a: LIMIT :l:', +]; diff --git a/tests/fixtures/parity/grammar-shape.json b/tests/fixtures/parity/grammar-shape.json new file mode 100644 index 0000000..eda4eee --- /dev/null +++ b/tests/fixtures/parity/grammar-shape.json @@ -0,0 +1,147 @@ +{ + "generator": "ext-phalcon 5.23.0", + "cases": { + "select star": {"source":"SELECT * FROM Robots","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}}}}}, + "select distinct": {"source":"SELECT DISTINCT name FROM Robots","parse":{"outcome":"value","value":{"type":309,"select":{"distinct":1,"columns":[{"type":354,"column":{"type":355,"name":"name"}}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"distinct":1,"columns":[{"type":354,"column":{"type":355,"name":"name"}}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}}}}}, + "select all": {"source":"SELECT ALL name FROM Robots","parse":{"outcome":"value","value":{"type":309,"select":{"distinct":0,"columns":[{"type":354,"column":{"type":355,"name":"name"}}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"distinct":0,"columns":[{"type":354,"column":{"type":355,"name":"name"}}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}}}}}, + "select domain star": {"source":"SELECT r.* FROM Robots r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":353,"column":"r"}],"tables":{"qualifiedName":{"type":355,"name":"Robots"},"alias":"r"}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":353,"column":"r"}],"tables":{"qualifiedName":{"type":355,"name":"Robots"},"alias":"r"}}}}}, + "select columns": {"source":"SELECT id, name, type FROM Robots","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"id"}},{"type":354,"column":{"type":355,"name":"name"}},{"type":354,"column":{"type":355,"name":"type"}}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"id"}},{"type":354,"column":{"type":355,"name":"name"}},{"type":354,"column":{"type":355,"name":"type"}}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}}}}}, + "select column alias as": {"source":"SELECT name AS n FROM Robots","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"name"},"alias":"n"}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"name"},"alias":"n"}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}}}}}, + "select column alias bare": {"source":"SELECT name n FROM Robots","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"name"},"alias":"n"}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"name"},"alias":"n"}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}}}}}, + "select expr alias": {"source":"SELECT id + 1 AS next FROM Robots","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":43,"left":{"type":355,"name":"id"},"right":{"type":258,"value":"1"}},"alias":"next"}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "select qualified column": {"source":"SELECT r.name FROM Robots r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"domain":"r","name":"name"}}],"tables":{"qualifiedName":{"type":355,"name":"Robots"},"alias":"r"}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"domain":"r","name":"name"}}],"tables":{"qualifiedName":{"type":355,"name":"Robots"},"alias":"r"}}}}}, + "select namespaced model": {"source":"SELECT * FROM \\App\\Models\\Robots","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"App\\Models\\Robots"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"App\\Models\\Robots"}}}}}}, + "select bracketed model": {"source":"SELECT * FROM [App\\Models\\Robots]","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"App\\Models\\Robots"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"App\\Models\\Robots"}}}}}}, + "select domain star and columns": {"source":"SELECT r.*, p.name FROM Robots r, Parts p","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":353,"column":"r"},{"type":354,"column":{"type":355,"domain":"p","name":"name"}}],"tables":[{"qualifiedName":{"type":355,"name":"Robots"},"alias":"r"},{"qualifiedName":{"type":355,"name":"Parts"},"alias":"p"}]}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":353,"column":"r"},{"type":354,"column":{"type":355,"domain":"p","name":"name"}}],"tables":[{"qualifiedName":{"type":355,"name":"Robots"},"alias":"r"},{"qualifiedName":{"type":355,"name":"Parts"},"alias":"p"}]}}}}, + "from two tables": {"source":"SELECT * FROM Robots, Parts","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":[{"qualifiedName":{"type":355,"name":"Robots"}},{"qualifiedName":{"type":355,"name":"Parts"}}]}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":[{"qualifiedName":{"type":355,"name":"Robots"}},{"qualifiedName":{"type":355,"name":"Parts"}}]}}}}, + "from three tables aliased": {"source":"SELECT * FROM Robots r, Parts AS p, Brands b","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":[{"qualifiedName":{"type":355,"name":"Robots"},"alias":"r"},{"qualifiedName":{"type":355,"name":"Parts"},"alias":"p"},{"qualifiedName":{"type":355,"name":"Brands"},"alias":"b"}]}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":[{"qualifiedName":{"type":355,"name":"Robots"},"alias":"r"},{"qualifiedName":{"type":355,"name":"Parts"},"alias":"p"},{"qualifiedName":{"type":355,"name":"Brands"},"alias":"b"}]}}}}, + "from alias as": {"source":"SELECT * FROM Robots AS r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Robots"},"alias":"r"}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Robots"},"alias":"r"}}}}}, + "from alias bare": {"source":"SELECT * FROM Robots r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Robots"},"alias":"r"}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Robots"},"alias":"r"}}}}}, + "from with item": {"source":"SELECT * FROM Robots WITH parts","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Robots"},"with":{"type":355,"name":"parts"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Robots"},"with":{"type":355,"name":"parts"}}}}}}, + "from with list": {"source":"SELECT * FROM Robots WITH (parts, brands)","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Robots"},"with":[{"type":355,"name":"parts"},{"type":355,"name":"brands"}]}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Robots"},"with":[{"type":355,"name":"parts"},{"type":355,"name":"brands"}]}}}}}, + "from alias as with item": {"source":"SELECT * FROM Robots AS r WITH parts","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Robots"},"alias":"r","with":{"type":355,"name":"parts"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Robots"},"alias":"r","with":{"type":355,"name":"parts"}}}}}}, + "from alias as with list": {"source":"SELECT * FROM Robots AS r WITH (parts, brands)","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Robots"},"alias":"r","with":[{"type":355,"name":"parts"},{"type":355,"name":"brands"}]}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Robots"},"alias":"r","with":[{"type":355,"name":"parts"},{"type":355,"name":"brands"}]}}}}}, + "from alias bare with item": {"source":"SELECT * FROM Robots r WITH parts","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Robots"},"alias":"r","with":{"type":355,"name":"parts"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Robots"},"alias":"r","with":{"type":355,"name":"parts"}}}}}}, + "from alias bare with list": {"source":"SELECT * FROM Robots r WITH (parts)","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Robots"},"alias":"r","with":{"type":355,"name":"parts"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Robots"},"alias":"r","with":{"type":355,"name":"parts"}}}}}}, + "join bare": {"source":"SELECT * FROM Robots JOIN Parts","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}},"joins":{"type":360,"qualified":{"type":355,"name":"Parts"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}},"joins":{"type":360,"qualified":{"type":355,"name":"Parts"}}}}}}, + "join inner": {"source":"SELECT * FROM Robots INNER JOIN Parts","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}},"joins":{"type":360,"qualified":{"type":355,"name":"Parts"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}},"joins":{"type":360,"qualified":{"type":355,"name":"Parts"}}}}}}, + "join cross": {"source":"SELECT * FROM Robots CROSS JOIN Parts","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}},"joins":{"type":363,"qualified":{"type":355,"name":"Parts"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}},"joins":{"type":363,"qualified":{"type":355,"name":"Parts"}}}}}}, + "join left": {"source":"SELECT * FROM Robots LEFT JOIN Parts","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}},"joins":{"type":361,"qualified":{"type":355,"name":"Parts"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}},"joins":{"type":361,"qualified":{"type":355,"name":"Parts"}}}}}}, + "join left outer": {"source":"SELECT * FROM Robots LEFT OUTER JOIN Parts","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}},"joins":{"type":361,"qualified":{"type":355,"name":"Parts"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}},"joins":{"type":361,"qualified":{"type":355,"name":"Parts"}}}}}}, + "join right": {"source":"SELECT * FROM Robots RIGHT JOIN Parts","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}},"joins":{"type":362,"qualified":{"type":355,"name":"Parts"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}},"joins":{"type":362,"qualified":{"type":355,"name":"Parts"}}}}}}, + "join right outer": {"source":"SELECT * FROM Robots RIGHT OUTER JOIN Parts","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}},"joins":{"type":362,"qualified":{"type":355,"name":"Parts"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}},"joins":{"type":362,"qualified":{"type":355,"name":"Parts"}}}}}}, + "join full": {"source":"SELECT * FROM Robots FULL JOIN Parts","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}},"joins":{"type":364,"qualified":{"type":355,"name":"Parts"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}},"joins":{"type":364,"qualified":{"type":355,"name":"Parts"}}}}}}, + "join full outer": {"source":"SELECT * FROM Robots FULL OUTER JOIN Parts","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}},"joins":{"type":364,"qualified":{"type":355,"name":"Parts"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}},"joins":{"type":364,"qualified":{"type":355,"name":"Parts"}}}}}}, + "join alias as": {"source":"SELECT * FROM Robots r JOIN Parts AS p","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Robots"},"alias":"r"},"joins":{"type":360,"qualified":{"type":355,"name":"Parts"},"alias":{"type":355,"name":"p"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Robots"},"alias":"r"},"joins":{"type":360,"qualified":{"type":355,"name":"Parts"},"alias":{"type":355,"name":"p"}}}}}}, + "join alias bare": {"source":"SELECT * FROM Robots r JOIN Parts p","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Robots"},"alias":"r"},"joins":{"type":360,"qualified":{"type":355,"name":"Parts"},"alias":{"type":355,"name":"p"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Robots"},"alias":"r"},"joins":{"type":360,"qualified":{"type":355,"name":"Parts"},"alias":{"type":355,"name":"p"}}}}}}, + "join on": {"source":"SELECT * FROM Robots r JOIN Parts p ON r.id = p.robots_id","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Robots"},"alias":"r"},"joins":{"type":360,"qualified":{"type":355,"name":"Parts"},"alias":{"type":355,"name":"p"},"conditions":{"type":61,"left":{"type":355,"domain":"r","name":"id"},"right":{"type":355,"domain":"p","name":"robots_id"}}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Robots"},"alias":"r"},"joins":{"type":360,"qualified":{"type":355,"name":"Parts"},"alias":{"type":355,"name":"p"},"conditions":{"type":61,"left":{"type":355,"domain":"r","name":"id"},"right":{"type":355,"domain":"p","name":"robots_id"}}}}}}}, + "join on without alias": {"source":"SELECT * FROM Robots JOIN Parts ON Robots.id = Parts.robots_id","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}},"joins":{"type":360,"qualified":{"type":355,"name":"Parts"},"conditions":{"type":61,"left":{"type":355,"domain":"Robots","name":"id"},"right":{"type":355,"domain":"Parts","name":"robots_id"}}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}},"joins":{"type":360,"qualified":{"type":355,"name":"Parts"},"conditions":{"type":61,"left":{"type":355,"domain":"Robots","name":"id"},"right":{"type":355,"domain":"Parts","name":"robots_id"}}}}}}}, + "join qualified model": {"source":"SELECT * FROM Robots JOIN \\App\\Parts AS p ON p.id = 1","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}},"joins":{"type":360,"qualified":{"type":355,"name":"App\\Parts"},"alias":{"type":355,"name":"p"},"conditions":{"type":61,"left":{"type":355,"domain":"p","name":"id"},"right":{"type":258,"value":"1"}}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "join two": {"source":"SELECT * FROM Robots r JOIN Parts p ON p.r = r.id LEFT JOIN Brands b ON b.id = r.b","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Robots"},"alias":"r"},"joins":[{"type":360,"qualified":{"type":355,"name":"Parts"},"alias":{"type":355,"name":"p"},"conditions":{"type":61,"left":{"type":355,"domain":"p","name":"r"},"right":{"type":355,"domain":"r","name":"id"}}},{"type":361,"qualified":{"type":355,"name":"Brands"},"alias":{"type":355,"name":"b"},"conditions":{"type":61,"left":{"type":355,"domain":"b","name":"id"},"right":{"type":355,"domain":"r","name":"b"}}}]}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Robots"},"alias":"r"},"joins":[{"type":360,"qualified":{"type":355,"name":"Parts"},"alias":{"type":355,"name":"p"},"conditions":{"type":61,"left":{"type":355,"domain":"p","name":"r"},"right":{"type":355,"domain":"r","name":"id"}}},{"type":361,"qualified":{"type":355,"name":"Brands"},"alias":{"type":355,"name":"b"},"conditions":{"type":61,"left":{"type":355,"domain":"b","name":"id"},"right":{"type":355,"domain":"r","name":"b"}}}]}}}}, + "join three": {"source":"SELECT * FROM a JOIN b JOIN c JOIN d","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"a"}},"joins":[{"type":360,"qualified":{"type":355,"name":"b"}},{"type":360,"qualified":{"type":355,"name":"c"}},{"type":360,"qualified":{"type":355,"name":"d"}}]}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"a"}},"joins":[{"type":360,"qualified":{"type":355,"name":"b"}},{"type":360,"qualified":{"type":355,"name":"c"}},{"type":360,"qualified":{"type":355,"name":"d"}}]}}}}, + "where": {"source":"SELECT * FROM Robots WHERE id = 1","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}},"where":{"type":61,"left":{"type":355,"name":"id"},"right":{"type":258,"value":"1"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "group one": {"source":"SELECT type, COUNT(*) FROM Robots GROUP BY type","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"type"}},{"type":354,"column":{"type":350,"name":"COUNT","arguments":[{"type":352}]}}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}},"groupBy":{"type":355,"name":"type"}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"type"}},{"type":354,"column":{"type":350,"name":"COUNT","arguments":[{"type":352}]}}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}},"groupBy":{"type":355,"name":"type"}}}}, + "group two": {"source":"SELECT type, year FROM Robots GROUP BY type, year","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"type"}},{"type":354,"column":{"type":355,"name":"year"}}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}},"groupBy":[{"type":355,"name":"type"},{"type":355,"name":"year"}]}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"type"}},{"type":354,"column":{"type":355,"name":"year"}}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}},"groupBy":[{"type":355,"name":"type"},{"type":355,"name":"year"}]}}}, + "group expr": {"source":"SELECT * FROM Robots GROUP BY year + 1","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}},"groupBy":{"type":43,"left":{"type":355,"name":"year"},"right":{"type":258,"value":"1"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "having": {"source":"SELECT type FROM Robots GROUP BY type HAVING COUNT(*) > 1","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"type"}}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}},"groupBy":{"type":355,"name":"type"},"having":{"type":62,"left":{"type":350,"name":"COUNT","arguments":[{"type":352}]},"right":{"type":258,"value":"1"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "having without group": {"source":"SELECT type FROM Robots HAVING COUNT(*) > 1","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"type"}}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}},"having":{"type":62,"left":{"type":350,"name":"COUNT","arguments":[{"type":352}]},"right":{"type":258,"value":"1"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "order one": {"source":"SELECT * FROM Robots ORDER BY name","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}},"orderBy":{"column":{"type":355,"name":"name"}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}},"orderBy":{"column":{"type":355,"name":"name"}}}}}, + "order asc": {"source":"SELECT * FROM Robots ORDER BY name ASC","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}},"orderBy":{"column":{"type":355,"name":"name"},"sort":327}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}},"orderBy":{"column":{"type":355,"name":"name"},"sort":327}}}}, + "order desc": {"source":"SELECT * FROM Robots ORDER BY name DESC","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}},"orderBy":{"column":{"type":355,"name":"name"},"sort":328}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}},"orderBy":{"column":{"type":355,"name":"name"},"sort":328}}}}, + "order two": {"source":"SELECT * FROM Robots ORDER BY name ASC, id DESC","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}},"orderBy":[{"column":{"type":355,"name":"name"},"sort":327},{"column":{"type":355,"name":"id"},"sort":328}]}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}},"orderBy":[{"column":{"type":355,"name":"name"},"sort":327},{"column":{"type":355,"name":"id"},"sort":328}]}}}, + "order three": {"source":"SELECT * FROM Robots ORDER BY a, b DESC, c ASC","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}},"orderBy":[{"column":{"type":355,"name":"a"}},{"column":{"type":355,"name":"b"},"sort":328},{"column":{"type":355,"name":"c"},"sort":327}]}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}},"orderBy":[{"column":{"type":355,"name":"a"}},{"column":{"type":355,"name":"b"},"sort":328},{"column":{"type":355,"name":"c"},"sort":327}]}}}, + "order expr": {"source":"SELECT * FROM Robots ORDER BY LENGTH(name) DESC","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}},"orderBy":{"column":{"type":350,"name":"LENGTH","arguments":[{"type":355,"name":"name"}]},"sort":328}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}},"orderBy":{"column":{"type":350,"name":"LENGTH","arguments":[{"type":355,"name":"name"}]},"sort":328}}}}, + "limit": {"source":"SELECT * FROM Robots LIMIT 10","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}},"limit":{"number":{"type":258,"value":"10"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "limit hex": {"source":"SELECT * FROM Robots LIMIT 0x10","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}},"limit":{"number":{"type":414,"value":"0x10"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "limit offset comma": {"source":"SELECT * FROM Robots LIMIT 5, 10","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}},"limit":{"number":{"type":258,"value":"10"},"offset":{"type":258,"value":"5"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "limit offset keyword": {"source":"SELECT * FROM Robots LIMIT 10 OFFSET 5","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}},"limit":{"number":{"type":258,"value":"10"},"offset":{"type":258,"value":"5"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "limit npl": {"source":"SELECT * FROM Robots LIMIT ?0","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}},"limit":{"number":{"type":273,"value":"?0"}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}},"limit":{"number":{"type":273,"value":"?0"}}}}}, + "limit spl": {"source":"SELECT * FROM Robots LIMIT :limit:","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}},"limit":{"number":{"type":274,"value":"limit"}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}},"limit":{"number":{"type":274,"value":"limit"}}}}}, + "limit bpl": {"source":"SELECT * FROM Robots LIMIT {limit}","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}},"limit":{"number":{"type":277,"value":"limit"}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}},"limit":{"number":{"type":277,"value":"limit"}}}}}, + "limit placeholders offset": {"source":"SELECT * FROM Robots LIMIT :l: OFFSET :o:","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}},"limit":{"number":{"type":274,"value":"l"},"offset":{"type":274,"value":"o"}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}},"limit":{"number":{"type":274,"value":"l"},"offset":{"type":274,"value":"o"}}}}}, + "limit placeholders comma": {"source":"SELECT * FROM Robots LIMIT ?1, ?0","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}},"limit":{"number":{"type":273,"value":"?0"},"offset":{"type":273,"value":"?1"}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}},"limit":{"number":{"type":273,"value":"?0"},"offset":{"type":273,"value":"?1"}}}}}, + "for update": {"source":"SELECT * FROM Robots FOR UPDATE","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}},"forUpdate":true}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}},"forUpdate":true}}}, + "for update after limit": {"source":"SELECT * FROM Robots WHERE id = 1 LIMIT 1 FOR UPDATE","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}},"where":{"type":61,"left":{"type":355,"name":"id"},"right":{"type":258,"value":"1"}},"limit":{"number":{"type":258,"value":"1"}},"forUpdate":true}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "all clauses": {"source":"SELECT DISTINCT r.type, COUNT(*) AS c FROM Robots r JOIN Parts p ON p.r = r.id WHERE r.id > 0 GROUP BY r.type HAVING COUNT(*) > 1 ORDER BY c DESC LIMIT 10 OFFSET 5 FOR UPDATE","parse":{"outcome":"value","value":{"type":309,"select":{"distinct":1,"columns":[{"type":354,"column":{"type":355,"domain":"r","name":"type"}},{"type":354,"column":{"type":350,"name":"COUNT","arguments":[{"type":352}]},"alias":"c"}],"tables":{"qualifiedName":{"type":355,"name":"Robots"},"alias":"r"},"joins":{"type":360,"qualified":{"type":355,"name":"Parts"},"alias":{"type":355,"name":"p"},"conditions":{"type":61,"left":{"type":355,"domain":"p","name":"r"},"right":{"type":355,"domain":"r","name":"id"}}}},"where":{"type":62,"left":{"type":355,"domain":"r","name":"id"},"right":{"type":258,"value":"0"}},"orderBy":{"column":{"type":355,"name":"c"},"sort":328},"groupBy":{"type":355,"domain":"r","name":"type"},"having":{"type":62,"left":{"type":350,"name":"COUNT","arguments":[{"type":352}]},"right":{"type":258,"value":"1"}},"limit":{"number":{"type":258,"value":"10"},"offset":{"type":258,"value":"5"}},"forUpdate":true}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "clauses wrong order order-group": {"source":"SELECT * FROM Robots ORDER BY a GROUP BY b","parse":{"outcome":"throw","value":"Syntax error, unexpected token GROUP, near to ' BY b', when parsing: SELECT * FROM Robots ORDER BY a GROUP BY b (42)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected token GROUP, near to ' BY b', when parsing: SELECT * FROM Robots ORDER BY a GROUP BY b (42)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "clauses wrong order limit-where": {"source":"SELECT * FROM Robots LIMIT 1 WHERE a = 1","parse":{"outcome":"throw","value":"Syntax error, unexpected token WHERE, near to ' a = 1', when parsing: SELECT * FROM Robots LIMIT 1 WHERE a = 1 (40)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "clauses wrong order having-group": {"source":"SELECT * FROM Robots HAVING a > 1 GROUP BY a","parse":{"outcome":"throw","value":"Syntax error, unexpected token GROUP, near to ' BY a', when parsing: SELECT * FROM Robots HAVING a > 1 GROUP BY a (44)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "insert values one": {"source":"INSERT INTO Robots VALUES (1)","parse":{"outcome":"value","value":{"type":306,"qualifiedName":{"type":355,"name":"Robots"},"values":[{"type":258,"value":"1"}]}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "insert values many": {"source":"INSERT INTO Robots VALUES (1, 'a', 2.5, NULL, TRUE)","parse":{"outcome":"value","value":{"type":306,"qualifiedName":{"type":355,"name":"Robots"},"values":[{"type":258,"value":"1"},{"type":260,"value":"a"},{"type":259,"value":"2.5"},{"type":322},{"type":334}]}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "insert fields": {"source":"INSERT INTO Robots (name) VALUES ('a')","parse":{"outcome":"value","value":{"type":306,"qualifiedName":{"type":355,"name":"Robots"},"fields":[{"type":355,"name":"name"}],"values":[{"type":260,"value":"a"}]}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "insert fields many": {"source":"INSERT INTO Robots (id, name, type) VALUES (:id:, :name:, :type:)","parse":{"outcome":"value","value":{"type":306,"qualifiedName":{"type":355,"name":"Robots"},"fields":[{"type":355,"name":"id"},{"type":355,"name":"name"},{"type":355,"name":"type"}],"values":[{"type":274,"value":"id"},{"type":274,"value":"name"},{"type":274,"value":"type"}]}},"parseNoLiterals":{"outcome":"value","value":{"type":306,"qualifiedName":{"type":355,"name":"Robots"},"fields":[{"type":355,"name":"id"},{"type":355,"name":"name"},{"type":355,"name":"type"}],"values":[{"type":274,"value":"id"},{"type":274,"value":"name"},{"type":274,"value":"type"}]}}}, + "insert qualified model": {"source":"INSERT INTO \\App\\Robots (name) VALUES (?0)","parse":{"outcome":"value","value":{"type":306,"qualifiedName":{"type":355,"name":"App\\Robots"},"fields":[{"type":355,"name":"name"}],"values":[{"type":273,"value":"?0"}]}},"parseNoLiterals":{"outcome":"value","value":{"type":306,"qualifiedName":{"type":355,"name":"App\\Robots"},"fields":[{"type":355,"name":"name"}],"values":[{"type":273,"value":"?0"}]}}}, + "insert expr values": {"source":"INSERT INTO Robots (a, b) VALUES (1 + 2, f(x))","parse":{"outcome":"value","value":{"type":306,"qualifiedName":{"type":355,"name":"Robots"},"fields":[{"type":355,"name":"a"},{"type":355,"name":"b"}],"values":[{"type":43,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":350,"name":"f","arguments":[{"type":355,"name":"x"}]}]}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "insert alias": {"source":"INSERT INTO Robots r VALUES (1)","parse":{"outcome":"throw","value":"Syntax error, unexpected token IDENTIFIER(r), near to ' VALUES (1)', when parsing: INSERT INTO Robots r VALUES (1) (31)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected token IDENTIFIER(r), near to ' VALUES (1)', when parsing: INSERT INTO Robots r VALUES (1) (31)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "update one": {"source":"UPDATE Robots SET name = 'a'","parse":{"outcome":"value","value":{"type":300,"update":{"tables":{"qualifiedName":{"type":355,"name":"Robots"}},"values":{"column":{"type":355,"name":"name"},"expr":{"type":260,"value":"a"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "update many": {"source":"UPDATE Robots SET name = 'a', type = 'b', year = 1","parse":{"outcome":"value","value":{"type":300,"update":{"tables":{"qualifiedName":{"type":355,"name":"Robots"}},"values":[{"column":{"type":355,"name":"name"},"expr":{"type":260,"value":"a"}},{"column":{"type":355,"name":"type"},"expr":{"type":260,"value":"b"}},{"column":{"type":355,"name":"year"},"expr":{"type":258,"value":"1"}}]}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "update where": {"source":"UPDATE Robots SET name = :n: WHERE id = :id:","parse":{"outcome":"value","value":{"type":300,"update":{"tables":{"qualifiedName":{"type":355,"name":"Robots"}},"values":{"column":{"type":355,"name":"name"},"expr":{"type":274,"value":"n"}}},"where":{"type":61,"left":{"type":355,"name":"id"},"right":{"type":274,"value":"id"}}}},"parseNoLiterals":{"outcome":"value","value":{"type":300,"update":{"tables":{"qualifiedName":{"type":355,"name":"Robots"}},"values":{"column":{"type":355,"name":"name"},"expr":{"type":274,"value":"n"}}},"where":{"type":61,"left":{"type":355,"name":"id"},"right":{"type":274,"value":"id"}}}}}, + "update limit": {"source":"UPDATE Robots SET name = 'a' LIMIT 10","parse":{"outcome":"value","value":{"type":300,"update":{"tables":{"qualifiedName":{"type":355,"name":"Robots"}},"values":{"column":{"type":355,"name":"name"},"expr":{"type":260,"value":"a"}}},"limit":{"number":{"type":258,"value":"10"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "update where limit": {"source":"UPDATE Robots SET name = 'a' WHERE id > 1 LIMIT ?0","parse":{"outcome":"value","value":{"type":300,"update":{"tables":{"qualifiedName":{"type":355,"name":"Robots"}},"values":{"column":{"type":355,"name":"name"},"expr":{"type":260,"value":"a"}}},"where":{"type":62,"left":{"type":355,"name":"id"},"right":{"type":258,"value":"1"}},"limit":{"number":{"type":273,"value":"?0"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "update alias": {"source":"UPDATE Robots AS r SET r.name = 'a'","parse":{"outcome":"value","value":{"type":300,"update":{"tables":{"qualifiedName":{"type":355,"name":"Robots"},"alias":"r"},"values":{"column":{"type":355,"domain":"r","name":"name"},"expr":{"type":260,"value":"a"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "update alias bare": {"source":"UPDATE Robots r SET r.name = 'a'","parse":{"outcome":"value","value":{"type":300,"update":{"tables":{"qualifiedName":{"type":355,"name":"Robots"},"alias":"r"},"values":{"column":{"type":355,"domain":"r","name":"name"},"expr":{"type":260,"value":"a"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "update join": {"source":"UPDATE Robots r JOIN Parts p ON p.r = r.id SET r.name = p.name","parse":{"outcome":"value","value":{"type":300,"update":{"tables":{"qualifiedName":{"type":355,"name":"Robots"},"alias":"r"},"joins":{"type":360,"qualified":{"type":355,"name":"Parts"},"alias":{"type":355,"name":"p"},"conditions":{"type":61,"left":{"type":355,"domain":"p","name":"r"},"right":{"type":355,"domain":"r","name":"id"}}},"values":{"column":{"type":355,"domain":"r","name":"name"},"expr":{"type":355,"domain":"p","name":"name"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":300,"update":{"tables":{"qualifiedName":{"type":355,"name":"Robots"},"alias":"r"},"joins":{"type":360,"qualified":{"type":355,"name":"Parts"},"alias":{"type":355,"name":"p"},"conditions":{"type":61,"left":{"type":355,"domain":"p","name":"r"},"right":{"type":355,"domain":"r","name":"id"}}},"values":{"column":{"type":355,"domain":"r","name":"name"},"expr":{"type":355,"domain":"p","name":"name"}}}}}}, + "update joins": {"source":"UPDATE Robots r JOIN Parts p LEFT JOIN Brands b SET r.a = 1 WHERE b.id = 2","parse":{"outcome":"value","value":{"type":300,"update":{"tables":{"qualifiedName":{"type":355,"name":"Robots"},"alias":"r"},"joins":[{"type":360,"qualified":{"type":355,"name":"Parts"},"alias":{"type":355,"name":"p"}},{"type":361,"qualified":{"type":355,"name":"Brands"},"alias":{"type":355,"name":"b"}}],"values":{"column":{"type":355,"domain":"r","name":"a"},"expr":{"type":258,"value":"1"}}},"where":{"type":61,"left":{"type":355,"domain":"b","name":"id"},"right":{"type":258,"value":"2"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "update qualified column": {"source":"UPDATE Robots SET Robots.name = 1","parse":{"outcome":"value","value":{"type":300,"update":{"tables":{"qualifiedName":{"type":355,"name":"Robots"}},"values":{"column":{"type":355,"domain":"Robots","name":"name"},"expr":{"type":258,"value":"1"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "update limit offset": {"source":"UPDATE Robots SET a = 1 LIMIT 1 OFFSET 2","parse":{"outcome":"throw","value":"Syntax error, unexpected token OFFSET, near to ' 2', when parsing: UPDATE Robots SET a = 1 LIMIT 1 OFFSET 2 (40)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "update with": {"source":"UPDATE Robots WITH parts SET a = 1","parse":{"outcome":"value","value":{"type":300,"update":{"tables":{"qualifiedName":{"type":355,"name":"Robots"},"with":{"type":355,"name":"parts"}},"values":{"column":{"type":355,"name":"a"},"expr":{"type":258,"value":"1"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "delete": {"source":"DELETE FROM Robots","parse":{"outcome":"value","value":{"type":303,"delete":{"tables":{"qualifiedName":{"type":355,"name":"Robots"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":303,"delete":{"tables":{"qualifiedName":{"type":355,"name":"Robots"}}}}}}, + "delete where": {"source":"DELETE FROM Robots WHERE id = 1","parse":{"outcome":"value","value":{"type":303,"delete":{"tables":{"qualifiedName":{"type":355,"name":"Robots"}}},"where":{"type":61,"left":{"type":355,"name":"id"},"right":{"type":258,"value":"1"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "delete limit": {"source":"DELETE FROM Robots LIMIT 10","parse":{"outcome":"value","value":{"type":303,"delete":{"tables":{"qualifiedName":{"type":355,"name":"Robots"}}},"limit":{"number":{"type":258,"value":"10"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "delete where limit": {"source":"DELETE FROM Robots WHERE id > :id: LIMIT :l:","parse":{"outcome":"value","value":{"type":303,"delete":{"tables":{"qualifiedName":{"type":355,"name":"Robots"}}},"where":{"type":62,"left":{"type":355,"name":"id"},"right":{"type":274,"value":"id"}},"limit":{"number":{"type":274,"value":"l"}}}},"parseNoLiterals":{"outcome":"value","value":{"type":303,"delete":{"tables":{"qualifiedName":{"type":355,"name":"Robots"}}},"where":{"type":62,"left":{"type":355,"name":"id"},"right":{"type":274,"value":"id"}},"limit":{"number":{"type":274,"value":"l"}}}}}, + "delete alias": {"source":"DELETE FROM Robots AS r WHERE r.id = 1","parse":{"outcome":"value","value":{"type":303,"delete":{"tables":{"qualifiedName":{"type":355,"name":"Robots"},"alias":"r"}},"where":{"type":61,"left":{"type":355,"domain":"r","name":"id"},"right":{"type":258,"value":"1"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "delete alias bare": {"source":"DELETE FROM Robots r WHERE r.id = 1","parse":{"outcome":"value","value":{"type":303,"delete":{"tables":{"qualifiedName":{"type":355,"name":"Robots"},"alias":"r"}},"where":{"type":61,"left":{"type":355,"domain":"r","name":"id"},"right":{"type":258,"value":"1"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "delete join": {"source":"DELETE FROM Robots r JOIN Parts p","parse":{"outcome":"throw","value":"Syntax error, unexpected token JOIN, near to ' Parts p', when parsing: DELETE FROM Robots r JOIN Parts p (33)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected token JOIN, near to ' Parts p', when parsing: DELETE FROM Robots r JOIN Parts p (33)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "delete two tables": {"source":"DELETE FROM Robots, Parts","parse":{"outcome":"throw","value":"Syntax error, unexpected token COMMA, near to ' Parts', when parsing: DELETE FROM Robots, Parts (25)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected token COMMA, near to ' Parts', when parsing: DELETE FROM Robots, Parts (25)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "fcall no args": {"source":"SELECT NOW() FROM Robots","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":350,"name":"NOW"}}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":350,"name":"NOW"}}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}}}}}, + "fcall star": {"source":"SELECT COUNT(*) FROM Robots","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":350,"name":"COUNT","arguments":[{"type":352}]}}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":350,"name":"COUNT","arguments":[{"type":352}]}}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}}}}}, + "fcall distinct": {"source":"SELECT COUNT(DISTINCT type) FROM Robots","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":350,"name":"COUNT","arguments":[{"type":355,"name":"type"}],"distinct":true}}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":350,"name":"COUNT","arguments":[{"type":355,"name":"type"}],"distinct":true}}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}}}}}, + "fcall distinct star": {"source":"SELECT COUNT(DISTINCT *) FROM Robots","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":350,"name":"COUNT","arguments":[{"type":352}],"distinct":true}}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":350,"name":"COUNT","arguments":[{"type":352}],"distinct":true}}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}}}}}, + "fcall distinct no args": {"source":"SELECT f(DISTINCT) FROM Robots","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":350,"name":"f","distinct":true}}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":350,"name":"f","distinct":true}}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}}}}}, + "fcall args": {"source":"SELECT CONCAT(a, '-', b, 1, 2.5) FROM Robots","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":350,"name":"CONCAT","arguments":[{"type":355,"name":"a"},{"type":260,"value":"-"},{"type":355,"name":"b"},{"type":258,"value":"1"},{"type":259,"value":"2.5"}]}}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "fcall nested": {"source":"SELECT UPPER(LOWER(TRIM(name))) FROM Robots","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":350,"name":"UPPER","arguments":[{"type":350,"name":"LOWER","arguments":[{"type":350,"name":"TRIM","arguments":[{"type":355,"name":"name"}]}]}]}}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":350,"name":"UPPER","arguments":[{"type":350,"name":"LOWER","arguments":[{"type":350,"name":"TRIM","arguments":[{"type":355,"name":"name"}]}]}]}}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}}}}}, + "fcall qualified name": {"source":"SELECT a.f(1) FROM Robots","parse":{"outcome":"throw","value":"Syntax error, unexpected token (, near to '1) FROM Robots', when parsing: SELECT a.f(1) FROM Robots (25)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected token (, near to '1) FROM Robots', when parsing: SELECT a.f(1) FROM Robots (25)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cast": {"source":"SELECT CAST(a AS INTEGER) FROM Robots","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":333,"left":{"type":355,"name":"a"},"right":{"type":358,"name":"INTEGER"}}}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":333,"left":{"type":355,"name":"a"},"right":{"type":358,"name":"INTEGER"}}}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}}}}}, + "convert": {"source":"SELECT CONVERT(a USING utf8) FROM Robots","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":336,"left":{"type":355,"name":"a"},"right":{"type":358,"name":"utf8"}}}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":336,"left":{"type":355,"name":"a"},"right":{"type":358,"name":"utf8"}}}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}}}}}, + "case one when": {"source":"SELECT CASE a WHEN 1 THEN 2 END FROM Robots","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":409,"left":{"type":355,"name":"a"},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]}}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "case when else": {"source":"SELECT CASE a WHEN 1 THEN 2 WHEN 3 THEN 4 ELSE 5 END FROM Robots","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":409,"left":{"type":355,"name":"a"},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},{"type":410,"left":{"type":258,"value":"3"},"right":{"type":258,"value":"4"}},{"type":411,"left":{"type":258,"value":"5"}}]}}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "case else only": {"source":"SELECT CASE a ELSE 5 END FROM Robots","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":409,"left":{"type":355,"name":"a"},"right":[{"type":411,"left":{"type":258,"value":"5"}}]}}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "case else first": {"source":"SELECT CASE a ELSE 5 WHEN 1 THEN 2 END FROM Robots","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":409,"left":{"type":355,"name":"a"},"right":[{"type":411,"left":{"type":258,"value":"5"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}]}}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "case two else": {"source":"SELECT CASE a ELSE 1 ELSE 2 END FROM Robots","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":409,"left":{"type":355,"name":"a"},"right":[{"type":411,"left":{"type":258,"value":"1"}},{"type":411,"left":{"type":258,"value":"2"}}]}}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "case searched form": {"source":"SELECT CASE WHEN a = 1 THEN 2 END FROM Robots","parse":{"outcome":"throw","value":"Syntax error, unexpected token WHEN, near to ' a = 1 THEN 2 END FROM Robots', when parsing: SELECT CASE WHEN a = 1 THEN 2 END FROM Robots (45)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected token WHEN, near to ' a = 1 THEN 2 END FROM Robots', when parsing: SELECT CASE WHEN a = 1 THEN 2 END FROM Robots (45)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "exists": {"source":"SELECT * FROM Robots WHERE EXISTS (SELECT * FROM Parts)","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}},"where":{"type":408,"right":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Parts"}}}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}},"where":{"type":408,"right":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Parts"}}}}}}}}, + "not exists": {"source":"SELECT * FROM Robots WHERE NOT EXISTS (SELECT * FROM Parts)","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}},"where":{"type":33,"right":{"type":408,"right":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Parts"}}}}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}},"where":{"type":33,"right":{"type":408,"right":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Parts"}}}}}}}}}, + "subquery column": {"source":"SELECT (SELECT COUNT(*) FROM Parts) AS c FROM Robots","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":407,"left":{"type":309,"select":{"columns":[{"type":354,"column":{"type":350,"name":"COUNT","arguments":[{"type":352}]}}],"tables":{"qualifiedName":{"type":355,"name":"Parts"}}}}},"alias":"c"}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":407,"left":{"type":309,"select":{"columns":[{"type":354,"column":{"type":350,"name":"COUNT","arguments":[{"type":352}]}}],"tables":{"qualifiedName":{"type":355,"name":"Parts"}}}}},"alias":"c"}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}}}}}, + "subquery where": {"source":"SELECT * FROM Robots WHERE id = (SELECT MAX(id) FROM Robots)","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}},"where":{"type":61,"left":{"type":355,"name":"id"},"right":{"type":407,"left":{"type":309,"select":{"columns":[{"type":354,"column":{"type":350,"name":"MAX","arguments":[{"type":355,"name":"id"}]}}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}}}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}},"where":{"type":61,"left":{"type":355,"name":"id"},"right":{"type":407,"left":{"type":309,"select":{"columns":[{"type":354,"column":{"type":350,"name":"MAX","arguments":[{"type":355,"name":"id"}]}}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}}}}}}}}, + "subquery all clauses": {"source":"SELECT * FROM r WHERE a IN (SELECT b FROM s WHERE c = 1 GROUP BY b HAVING b > 1 ORDER BY b LIMIT 1 FOR UPDATE)","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":315,"left":{"type":355,"name":"a"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"b"}}],"tables":{"qualifiedName":{"type":355,"name":"s"}}},"where":{"type":61,"left":{"type":355,"name":"c"},"right":{"type":258,"value":"1"}},"orderBy":{"column":{"type":355,"name":"b"}},"groupBy":{"type":355,"name":"b"},"having":{"type":62,"left":{"type":355,"name":"b"},"right":{"type":258,"value":"1"}},"limit":{"number":{"type":258,"value":"1"}},"forUpdate":true}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "in list": {"source":"SELECT * FROM Robots WHERE id IN (1, 2, 3)","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}},"where":{"type":315,"left":{"type":355,"name":"id"},"right":[{"type":258,"value":"1"},{"type":258,"value":"2"},{"type":258,"value":"3"}]}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "in one": {"source":"SELECT * FROM Robots WHERE id IN (1)","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}},"where":{"type":315,"left":{"type":355,"name":"id"},"right":[{"type":258,"value":"1"}]}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "in star": {"source":"SELECT * FROM Robots WHERE id IN (*)","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}},"where":{"type":315,"left":{"type":355,"name":"id"},"right":[{"type":352}]}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}},"where":{"type":315,"left":{"type":355,"name":"id"},"right":[{"type":352}]}}}}, + "in empty": {"source":"SELECT * FROM Robots WHERE id IN ()","parse":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "not in list": {"source":"SELECT * FROM Robots WHERE id NOT IN (1, 2)","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}},"where":{"type":323,"left":{"type":355,"name":"id"},"right":[{"type":258,"value":"1"},{"type":258,"value":"2"}]}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "in subquery": {"source":"SELECT * FROM Robots WHERE id IN (SELECT r FROM Parts)","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}},"where":{"type":315,"left":{"type":355,"name":"id"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"r"}}],"tables":{"qualifiedName":{"type":355,"name":"Parts"}}}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}},"where":{"type":315,"left":{"type":355,"name":"id"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"r"}}],"tables":{"qualifiedName":{"type":355,"name":"Parts"}}}}}}}}, + "not in subquery": {"source":"SELECT * FROM Robots WHERE id NOT IN (SELECT r FROM Parts)","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}},"where":{"type":323,"left":{"type":355,"name":"id"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"r"}}],"tables":{"qualifiedName":{"type":355,"name":"Parts"}}}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}},"where":{"type":323,"left":{"type":355,"name":"id"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"r"}}],"tables":{"qualifiedName":{"type":355,"name":"Parts"}}}}}}}}, + "in placeholder": {"source":"SELECT * FROM Robots WHERE id IN ({ids:array})","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}},"where":{"type":315,"left":{"type":355,"name":"id"},"right":[{"type":277,"value":"ids:array"}]}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}},"where":{"type":315,"left":{"type":355,"name":"id"},"right":[{"type":277,"value":"ids:array"}]}}}}, + "between": {"source":"SELECT * FROM Robots WHERE id BETWEEN 1 AND 10","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}},"where":{"type":331,"left":{"type":355,"name":"id"},"right":{"type":266,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"10"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "not between": {"source":"SELECT * FROM Robots WHERE id NOT BETWEEN 1 AND 10","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}},"where":{"type":332,"left":{"type":355,"name":"id"},"right":{"type":266,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"10"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "is null": {"source":"SELECT * FROM Robots WHERE name IS NULL","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}},"where":{"type":365,"left":{"type":355,"name":"name"}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}},"where":{"type":365,"left":{"type":355,"name":"name"}}}}}, + "is not null": {"source":"SELECT * FROM Robots WHERE name IS NOT NULL","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}},"where":{"type":366,"left":{"type":355,"name":"name"}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}},"where":{"type":366,"left":{"type":355,"name":"name"}}}}}, + "like": {"source":"SELECT * FROM Robots WHERE name LIKE '%a%'","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}},"where":{"type":268,"left":{"type":355,"name":"name"},"right":{"type":260,"value":"%a%"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "not like": {"source":"SELECT * FROM Robots WHERE name NOT LIKE '%a%'","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}},"where":{"type":351,"left":{"type":355,"name":"name"},"right":{"type":260,"value":"%a%"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "ilike": {"source":"SELECT * FROM Robots WHERE name ILIKE '%a%'","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}},"where":{"type":275,"left":{"type":355,"name":"name"},"right":{"type":260,"value":"%a%"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "not ilike": {"source":"SELECT * FROM Robots WHERE name NOT ILIKE '%a%'","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}},"where":{"type":357,"left":{"type":355,"name":"name"},"right":{"type":260,"value":"%a%"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "against": {"source":"SELECT * FROM Robots WHERE MATCH(name) AGAINST ('x')","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}},"where":{"type":276,"left":{"type":350,"name":"MATCH","arguments":[{"type":355,"name":"name"}]},"right":{"type":356,"left":{"type":260,"value":"x"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "enclosed": {"source":"SELECT (a) FROM Robots","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":356,"left":{"type":355,"name":"a"}}}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":356,"left":{"type":355,"name":"a"}}}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}}}}}, + "unary minus": {"source":"SELECT -a FROM Robots","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":367,"right":{"type":355,"name":"a"}}}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":367,"right":{"type":355,"name":"a"}}}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}}}}}, + "unary minus literal": {"source":"SELECT -1 FROM Robots","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":367,"right":{"type":258,"value":"1"}}}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "not": {"source":"SELECT * FROM Robots WHERE NOT a","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}},"where":{"type":33,"right":{"type":355,"name":"a"}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}},"where":{"type":33,"right":{"type":355,"name":"a"}}}}}, + "bitwise not": {"source":"SELECT ~a FROM Robots","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":126,"right":{"type":355,"name":"a"}}}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":126,"right":{"type":355,"name":"a"}}}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}}}}}, + "literals": {"source":"SELECT 1, 1.5, 's', \"d\", 0x1F, NULL, TRUE, FALSE FROM Robots","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":258,"value":"1"}},{"type":354,"column":{"type":259,"value":"1.5"}},{"type":354,"column":{"type":260,"value":"s"}},{"type":354,"column":{"type":260,"value":"d"}},{"type":354,"column":{"type":414,"value":"0x1F"}},{"type":354,"column":{"type":322}},{"type":354,"column":{"type":334}},{"type":354,"column":{"type":335}}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "placeholders": {"source":"SELECT * FROM Robots WHERE a = ?0 AND b = :name: AND c = {named} AND d = {t:int}","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}},"where":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":355,"name":"a"},"right":{"type":266,"left":{"type":273,"value":"?0"},"right":{"type":355,"name":"b"}}},"right":{"type":266,"left":{"type":274,"value":"name"},"right":{"type":355,"name":"c"}}},"right":{"type":266,"left":{"type":277,"value":"named"},"right":{"type":355,"name":"d"}}},"right":{"type":277,"value":"t:int"}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}},"where":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":355,"name":"a"},"right":{"type":266,"left":{"type":273,"value":"?0"},"right":{"type":355,"name":"b"}}},"right":{"type":266,"left":{"type":274,"value":"name"},"right":{"type":355,"name":"c"}}},"right":{"type":266,"left":{"type":277,"value":"named"},"right":{"type":355,"name":"d"}}},"right":{"type":277,"value":"t:int"}}}}}, + "json operators": {"source":"SELECT a->b, a->>b, a#>b, a#>>b FROM Robots","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":406,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}},{"type":354,"column":{"type":416,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}},{"type":354,"column":{"type":417,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}},{"type":354,"column":{"type":418,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":406,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}},{"type":354,"column":{"type":416,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}},{"type":354,"column":{"type":417,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}},{"type":354,"column":{"type":418,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}}}}}, + "pg operators": {"source":"SELECT * FROM Robots WHERE a @@ b AND a @> b AND a <@ b AND a && b AND a || b","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}},"where":{"type":404,"left":{"type":403,"left":{"type":402,"left":{"type":401,"left":{"type":355,"name":"a"},"right":{"type":266,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"a"}}},"right":{"type":266,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"a"}}},"right":{"type":266,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"a"}}},"right":{"type":266,"left":{"type":355,"name":"b"},"right":{"type":405,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}},"where":{"type":404,"left":{"type":403,"left":{"type":402,"left":{"type":401,"left":{"type":355,"name":"a"},"right":{"type":266,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"a"}}},"right":{"type":266,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"a"}}},"right":{"type":266,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"a"}}},"right":{"type":266,"left":{"type":355,"name":"b"},"right":{"type":405,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}}}}}, + "bitwise operators": {"source":"SELECT a & b, a | b, a ^ b FROM Robots","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":38,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}},{"type":354,"column":{"type":124,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}},{"type":354,"column":{"type":94,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":38,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}},{"type":354,"column":{"type":124,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}},{"type":354,"column":{"type":94,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}}}}}, + "comparison operators": {"source":"SELECT * FROM r WHERE a = 1 AND a != 1 AND a <> 1 AND a < 1 AND a > 1 AND a <= 1 AND a >= 1","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":272,"left":{"type":271,"left":{"type":62,"left":{"type":60,"left":{"type":270,"left":{"type":270,"left":{"type":61,"left":{"type":355,"name":"a"},"right":{"type":266,"left":{"type":258,"value":"1"},"right":{"type":355,"name":"a"}}},"right":{"type":266,"left":{"type":258,"value":"1"},"right":{"type":355,"name":"a"}}},"right":{"type":266,"left":{"type":258,"value":"1"},"right":{"type":355,"name":"a"}}},"right":{"type":266,"left":{"type":258,"value":"1"},"right":{"type":355,"name":"a"}}},"right":{"type":266,"left":{"type":258,"value":"1"},"right":{"type":355,"name":"a"}}},"right":{"type":266,"left":{"type":258,"value":"1"},"right":{"type":355,"name":"a"}}},"right":{"type":258,"value":"1"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "arithmetic operators": {"source":"SELECT a + b, a - b, a * b, a / b, a % b FROM Robots","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}},{"type":354,"column":{"type":45,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}},{"type":354,"column":{"type":42,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}},{"type":354,"column":{"type":47,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}},{"type":354,"column":{"type":37,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}},{"type":354,"column":{"type":45,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}},{"type":354,"column":{"type":42,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}},{"type":354,"column":{"type":47,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}},{"type":354,"column":{"type":37,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}}}}} + } +} diff --git a/tests/fixtures/parity/grammar-shape.php b/tests/fixtures/parity/grammar-shape.php new file mode 100644 index 0000000..3757285 --- /dev/null +++ b/tests/fixtures/parity/grammar-shape.php @@ -0,0 +1,170 @@ + 'SELECT * FROM Robots', + 'select distinct' => 'SELECT DISTINCT name FROM Robots', + 'select all' => 'SELECT ALL name FROM Robots', + 'select domain star' => 'SELECT r.* FROM Robots r', + 'select columns' => 'SELECT id, name, type FROM Robots', + 'select column alias as' => 'SELECT name AS n FROM Robots', + 'select column alias bare' => 'SELECT name n FROM Robots', + 'select expr alias' => 'SELECT id + 1 AS next FROM Robots', + 'select qualified column' => 'SELECT r.name FROM Robots r', + 'select namespaced model' => 'SELECT * FROM \App\Models\Robots', + 'select bracketed model' => 'SELECT * FROM [App\Models\Robots]', + 'select domain star and columns' => 'SELECT r.*, p.name FROM Robots r, Parts p', + + // associated_name_list / associated_name + 'from two tables' => 'SELECT * FROM Robots, Parts', + 'from three tables aliased' => 'SELECT * FROM Robots r, Parts AS p, Brands b', + 'from alias as' => 'SELECT * FROM Robots AS r', + 'from alias bare' => 'SELECT * FROM Robots r', + 'from with item' => 'SELECT * FROM Robots WITH parts', + 'from with list' => 'SELECT * FROM Robots WITH (parts, brands)', + 'from alias as with item' => 'SELECT * FROM Robots AS r WITH parts', + 'from alias as with list' => 'SELECT * FROM Robots AS r WITH (parts, brands)', + 'from alias bare with item' => 'SELECT * FROM Robots r WITH parts', + 'from alias bare with list' => 'SELECT * FROM Robots r WITH (parts)', + + // join_list / join_clause / join_type / join_associated_name / join_conditions + 'join bare' => 'SELECT * FROM Robots JOIN Parts', + 'join inner' => 'SELECT * FROM Robots INNER JOIN Parts', + 'join cross' => 'SELECT * FROM Robots CROSS JOIN Parts', + 'join left' => 'SELECT * FROM Robots LEFT JOIN Parts', + 'join left outer' => 'SELECT * FROM Robots LEFT OUTER JOIN Parts', + 'join right' => 'SELECT * FROM Robots RIGHT JOIN Parts', + 'join right outer' => 'SELECT * FROM Robots RIGHT OUTER JOIN Parts', + 'join full' => 'SELECT * FROM Robots FULL JOIN Parts', + 'join full outer' => 'SELECT * FROM Robots FULL OUTER JOIN Parts', + 'join alias as' => 'SELECT * FROM Robots r JOIN Parts AS p', + 'join alias bare' => 'SELECT * FROM Robots r JOIN Parts p', + 'join on' => 'SELECT * FROM Robots r JOIN Parts p ON r.id = p.robots_id', + 'join on without alias' => 'SELECT * FROM Robots JOIN Parts ON Robots.id = Parts.robots_id', + 'join qualified model' => 'SELECT * FROM Robots JOIN \App\Parts AS p ON p.id = 1', + 'join two' => 'SELECT * FROM Robots r JOIN Parts p ON p.r = r.id LEFT JOIN Brands b ON b.id = r.b', + 'join three' => 'SELECT * FROM a JOIN b JOIN c JOIN d', + + // where / group / having / order / limit / for update, all orders + 'where' => 'SELECT * FROM Robots WHERE id = 1', + 'group one' => 'SELECT type, COUNT(*) FROM Robots GROUP BY type', + 'group two' => 'SELECT type, year FROM Robots GROUP BY type, year', + 'group expr' => 'SELECT * FROM Robots GROUP BY year + 1', + 'having' => 'SELECT type FROM Robots GROUP BY type HAVING COUNT(*) > 1', + 'having without group' => 'SELECT type FROM Robots HAVING COUNT(*) > 1', + 'order one' => 'SELECT * FROM Robots ORDER BY name', + 'order asc' => 'SELECT * FROM Robots ORDER BY name ASC', + 'order desc' => 'SELECT * FROM Robots ORDER BY name DESC', + 'order two' => 'SELECT * FROM Robots ORDER BY name ASC, id DESC', + 'order three' => 'SELECT * FROM Robots ORDER BY a, b DESC, c ASC', + 'order expr' => 'SELECT * FROM Robots ORDER BY LENGTH(name) DESC', + 'limit' => 'SELECT * FROM Robots LIMIT 10', + 'limit hex' => 'SELECT * FROM Robots LIMIT 0x10', + 'limit offset comma' => 'SELECT * FROM Robots LIMIT 5, 10', + 'limit offset keyword' => 'SELECT * FROM Robots LIMIT 10 OFFSET 5', + 'limit npl' => 'SELECT * FROM Robots LIMIT ?0', + 'limit spl' => 'SELECT * FROM Robots LIMIT :limit:', + 'limit bpl' => 'SELECT * FROM Robots LIMIT {limit}', + 'limit placeholders offset' => 'SELECT * FROM Robots LIMIT :l: OFFSET :o:', + 'limit placeholders comma' => 'SELECT * FROM Robots LIMIT ?1, ?0', + 'for update' => 'SELECT * FROM Robots FOR UPDATE', + 'for update after limit' => 'SELECT * FROM Robots WHERE id = 1 LIMIT 1 FOR UPDATE', + 'all clauses' => 'SELECT DISTINCT r.type, COUNT(*) AS c FROM Robots r JOIN Parts p ON p.r = r.id ' + . 'WHERE r.id > 0 GROUP BY r.type HAVING COUNT(*) > 1 ORDER BY c DESC LIMIT 10 OFFSET 5 FOR UPDATE', + 'clauses wrong order order-group' => 'SELECT * FROM Robots ORDER BY a GROUP BY b', + 'clauses wrong order limit-where' => 'SELECT * FROM Robots LIMIT 1 WHERE a = 1', + 'clauses wrong order having-group' => 'SELECT * FROM Robots HAVING a > 1 GROUP BY a', + + // insert_statement / values_list / field_list + 'insert values one' => 'INSERT INTO Robots VALUES (1)', + 'insert values many' => 'INSERT INTO Robots VALUES (1, \'a\', 2.5, NULL, TRUE)', + 'insert fields' => 'INSERT INTO Robots (name) VALUES (\'a\')', + 'insert fields many' => 'INSERT INTO Robots (id, name, type) VALUES (:id:, :name:, :type:)', + 'insert qualified model' => 'INSERT INTO \App\Robots (name) VALUES (?0)', + 'insert expr values' => 'INSERT INTO Robots (a, b) VALUES (1 + 2, f(x))', + 'insert alias' => 'INSERT INTO Robots r VALUES (1)', + + // update_statement / update_clause / update_item_list / limit_clause + 'update one' => 'UPDATE Robots SET name = \'a\'', + 'update many' => 'UPDATE Robots SET name = \'a\', type = \'b\', year = 1', + 'update where' => 'UPDATE Robots SET name = :n: WHERE id = :id:', + 'update limit' => 'UPDATE Robots SET name = \'a\' LIMIT 10', + 'update where limit' => 'UPDATE Robots SET name = \'a\' WHERE id > 1 LIMIT ?0', + 'update alias' => 'UPDATE Robots AS r SET r.name = \'a\'', + 'update alias bare' => 'UPDATE Robots r SET r.name = \'a\'', + 'update join' => 'UPDATE Robots r JOIN Parts p ON p.r = r.id SET r.name = p.name', + 'update joins' => 'UPDATE Robots r JOIN Parts p LEFT JOIN Brands b SET r.a = 1 WHERE b.id = 2', + 'update qualified column' => 'UPDATE Robots SET Robots.name = 1', + 'update limit offset' => 'UPDATE Robots SET a = 1 LIMIT 1 OFFSET 2', + 'update with' => 'UPDATE Robots WITH parts SET a = 1', + + // delete_statement / delete_clause + 'delete' => 'DELETE FROM Robots', + 'delete where' => 'DELETE FROM Robots WHERE id = 1', + 'delete limit' => 'DELETE FROM Robots LIMIT 10', + 'delete where limit' => 'DELETE FROM Robots WHERE id > :id: LIMIT :l:', + 'delete alias' => 'DELETE FROM Robots AS r WHERE r.id = 1', + 'delete alias bare' => 'DELETE FROM Robots r WHERE r.id = 1', + 'delete join' => 'DELETE FROM Robots r JOIN Parts p', + 'delete two tables' => 'DELETE FROM Robots, Parts', + + // expression atoms + 'fcall no args' => 'SELECT NOW() FROM Robots', + 'fcall star' => 'SELECT COUNT(*) FROM Robots', + 'fcall distinct' => 'SELECT COUNT(DISTINCT type) FROM Robots', + 'fcall distinct star' => 'SELECT COUNT(DISTINCT *) FROM Robots', + 'fcall distinct no args' => 'SELECT f(DISTINCT) FROM Robots', + 'fcall args' => 'SELECT CONCAT(a, \'-\', b, 1, 2.5) FROM Robots', + 'fcall nested' => 'SELECT UPPER(LOWER(TRIM(name))) FROM Robots', + 'fcall qualified name' => 'SELECT a.f(1) FROM Robots', + 'cast' => 'SELECT CAST(a AS INTEGER) FROM Robots', + 'convert' => 'SELECT CONVERT(a USING utf8) FROM Robots', + 'case one when' => 'SELECT CASE a WHEN 1 THEN 2 END FROM Robots', + 'case when else' => 'SELECT CASE a WHEN 1 THEN 2 WHEN 3 THEN 4 ELSE 5 END FROM Robots', + 'case else only' => 'SELECT CASE a ELSE 5 END FROM Robots', + 'case else first' => 'SELECT CASE a ELSE 5 WHEN 1 THEN 2 END FROM Robots', + 'case two else' => 'SELECT CASE a ELSE 1 ELSE 2 END FROM Robots', + 'case searched form' => 'SELECT CASE WHEN a = 1 THEN 2 END FROM Robots', + 'exists' => 'SELECT * FROM Robots WHERE EXISTS (SELECT * FROM Parts)', + 'not exists' => 'SELECT * FROM Robots WHERE NOT EXISTS (SELECT * FROM Parts)', + 'subquery column' => 'SELECT (SELECT COUNT(*) FROM Parts) AS c FROM Robots', + 'subquery where' => 'SELECT * FROM Robots WHERE id = (SELECT MAX(id) FROM Robots)', + 'subquery all clauses' => 'SELECT * FROM r WHERE a IN (SELECT b FROM s WHERE c = 1 GROUP BY b HAVING b > 1 ORDER BY b LIMIT 1 FOR UPDATE)', + 'in list' => 'SELECT * FROM Robots WHERE id IN (1, 2, 3)', + 'in one' => 'SELECT * FROM Robots WHERE id IN (1)', + 'in star' => 'SELECT * FROM Robots WHERE id IN (*)', + 'in empty' => 'SELECT * FROM Robots WHERE id IN ()', + 'not in list' => 'SELECT * FROM Robots WHERE id NOT IN (1, 2)', + 'in subquery' => 'SELECT * FROM Robots WHERE id IN (SELECT r FROM Parts)', + 'not in subquery' => 'SELECT * FROM Robots WHERE id NOT IN (SELECT r FROM Parts)', + 'in placeholder' => 'SELECT * FROM Robots WHERE id IN ({ids:array})', + 'between' => 'SELECT * FROM Robots WHERE id BETWEEN 1 AND 10', + 'not between' => 'SELECT * FROM Robots WHERE id NOT BETWEEN 1 AND 10', + 'is null' => 'SELECT * FROM Robots WHERE name IS NULL', + 'is not null' => 'SELECT * FROM Robots WHERE name IS NOT NULL', + 'like' => 'SELECT * FROM Robots WHERE name LIKE \'%a%\'', + 'not like' => 'SELECT * FROM Robots WHERE name NOT LIKE \'%a%\'', + 'ilike' => 'SELECT * FROM Robots WHERE name ILIKE \'%a%\'', + 'not ilike' => 'SELECT * FROM Robots WHERE name NOT ILIKE \'%a%\'', + 'against' => 'SELECT * FROM Robots WHERE MATCH(name) AGAINST (\'x\')', + 'enclosed' => 'SELECT (a) FROM Robots', + 'unary minus' => 'SELECT -a FROM Robots', + 'unary minus literal' => 'SELECT -1 FROM Robots', + 'not' => 'SELECT * FROM Robots WHERE NOT a', + 'bitwise not' => 'SELECT ~a FROM Robots', + 'literals' => 'SELECT 1, 1.5, \'s\', "d", 0x1F, NULL, TRUE, FALSE FROM Robots', + 'placeholders' => 'SELECT * FROM Robots WHERE a = ?0 AND b = :name: AND c = {named} AND d = {t:int}', + 'json operators' => 'SELECT a->b, a->>b, a#>b, a#>>b FROM Robots', + 'pg operators' => 'SELECT * FROM Robots WHERE a @@ b AND a @> b AND a <@ b AND a && b AND a || b', + 'bitwise operators' => 'SELECT a & b, a | b, a ^ b FROM Robots', + 'comparison operators' => 'SELECT * FROM r WHERE a = 1 AND a != 1 AND a <> 1 AND a < 1 AND a > 1 AND a <= 1 AND a >= 1', + 'arithmetic operators' => 'SELECT a + b, a - b, a * b, a / b, a % b FROM Robots', +]; diff --git a/tests/fixtures/parity/harvested.json b/tests/fixtures/parity/harvested.json new file mode 100644 index 0000000..f4e7922 --- /dev/null +++ b/tests/fixtures/parity/harvested.json @@ -0,0 +1,543 @@ +{ + "generator": "ext-phalcon 5.23.0", + "cases": { + "cphalcon:benchmarks/Apps/Rest/Fixture#1": {"source":"INSERT INTO robots (name, type, year) VALUES (:name, :type, :year)","parse":{"outcome":"throw","value":"Scanner: Unknown opcode 58","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Scanner: Unknown opcode 58","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:benchmarks/Db/PdoBench#1": {"source":"SELECT id, name, type, year FROM robots ORDER BY id LIMIT 20","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"id"}},{"type":354,"column":{"type":355,"name":"name"}},{"type":354,"column":{"type":355,"name":"type"}},{"type":354,"column":{"type":355,"name":"year"}}],"tables":{"qualifiedName":{"type":355,"name":"robots"}}},"orderBy":{"column":{"type":355,"name":"id"}},"limit":{"number":{"type":258,"value":"20"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:benchmarks/Db/PdoBench#2": {"source":"SELECT name FROM robots WHERE id = :id","parse":{"outcome":"throw","value":"Scanner: Unknown opcode 58","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Scanner: Unknown opcode 58","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:benchmarks/Mvc/ModelBench#1": {"source":"SELECT robot.*, copy.* FROM ","parse":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:benchmarks/Mvc/QueryBench#1": {"source":"SELECT r.id, r.name FROM ","parse":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:benchmarks/Mvc/RouterBench#1": {"source":"update","parse":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:benchmarks/Mvc/RouterBench#2": {"source":"delete","parse":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/DataMapper/Pdo/Connection/AutoReconnectTest#1": {"source":"SELECT 1","parse":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/DataMapper/Pdo/Connection/AutoReconnectTest#2": {"source":"SELECT CONNECTION_ID()","parse":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/DataMapper/Pdo/Connection/AutoReconnectTest#3": {"source":"SELECT pg_backend_pid()","parse":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/DataMapper/Pdo/Connection/AutoReconnectTest#4": {"source":"SELECT pg_terminate_backend(","parse":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/DataMapper/Pdo/Connection/CommitInTransactionRollBackTest#1": {"source":"insert into co_invoices (inv_id, inv_cst_id, inv_status_flag, inv_title, inv_total, inv_created_at) values (","parse":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/DataMapper/Pdo/Connection/CommitInTransactionRollBackTest#2": {"source":"select * from co_invoices WHERE inv_id = ?","parse":{"outcome":"throw","value":"Scanning error before '' when parsing: select * from co_invoices WHERE inv_id = ? (42)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Scanning error before '' when parsing: select * from co_invoices WHERE inv_id = ? (42)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/DataMapper/Pdo/Connection/EventsQueryTest#1": {"source":"delete from co_invoices","parse":{"outcome":"value","value":{"type":303,"delete":{"tables":{"qualifiedName":{"type":355,"name":"co_invoices"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":303,"delete":{"tables":{"qualifiedName":{"type":355,"name":"co_invoices"}}}}}}, + "cphalcon:database/DataMapper/Pdo/Connection/EventsQueryTest#2": {"source":"update co_invoices set inv_total = inv_total + 100","parse":{"outcome":"value","value":{"type":300,"update":{"tables":{"qualifiedName":{"type":355,"name":"co_invoices"}},"values":{"column":{"type":355,"name":"inv_total"},"expr":{"type":43,"left":{"type":355,"name":"inv_total"},"right":{"type":258,"value":"100"}}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/DataMapper/Pdo/Connection/EventsQueryTest#3": {"source":"select * from co_invoices","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"co_invoices"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"co_invoices"}}}}}}, + "cphalcon:database/DataMapper/Pdo/Connection/EventsQueryTest#4": {"source":"select * from co_invoices where inv_id = ?","parse":{"outcome":"throw","value":"Scanning error before '' when parsing: select * from co_invoices where inv_id = ? (42)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Scanning error before '' when parsing: select * from co_invoices where inv_id = ? (42)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/DataMapper/Pdo/Connection/FetchAllTest#1": {"source":"SELECT * from co_invoices","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"co_invoices"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"co_invoices"}}}}}}, + "cphalcon:database/DataMapper/Pdo/Connection/FetchGroupTest#1": {"source":"SELECT inv_status_flag, inv_id, inv_total from co_invoices","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"inv_status_flag"}},{"type":354,"column":{"type":355,"name":"inv_id"}},{"type":354,"column":{"type":355,"name":"inv_total"}}],"tables":{"qualifiedName":{"type":355,"name":"co_invoices"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"inv_status_flag"}},{"type":354,"column":{"type":355,"name":"inv_id"}},{"type":354,"column":{"type":355,"name":"inv_total"}}],"tables":{"qualifiedName":{"type":355,"name":"co_invoices"}}}}}}, + "cphalcon:database/DataMapper/Pdo/Connection/FetchObjectTest#1": {"source":"select inv_id, inv_total from co_invoices WHERE inv_id = ?","parse":{"outcome":"throw","value":"Scanning error before '' when parsing: select inv_id, inv_total from co_invoices WHERE inv_id = ? (58)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Scanning error before '' when parsing: select inv_id, inv_total from co_invoices WHERE inv_id = ? (58)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/DataMapper/Pdo/Connection/FetchOneTest#1": {"source":"select * from co_invoices WHERE ","parse":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/DataMapper/Pdo/Connection/FetchPairsTest#1": {"source":"SELECT inv_id, inv_total from co_invoices","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"inv_id"}},{"type":354,"column":{"type":355,"name":"inv_total"}}],"tables":{"qualifiedName":{"type":355,"name":"co_invoices"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"inv_id"}},{"type":354,"column":{"type":355,"name":"inv_total"}}],"tables":{"qualifiedName":{"type":355,"name":"co_invoices"}}}}}}, + "cphalcon:database/DataMapper/Pdo/Connection/FetchValueTest#1": {"source":"select inv_total from co_invoices WHERE inv_cst_id = ?","parse":{"outcome":"throw","value":"Scanning error before '' when parsing: select inv_total from co_invoices WHERE inv_cst_id = ? (54)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Scanning error before '' when parsing: select inv_total from co_invoices WHERE inv_cst_id = ? (54)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/DataMapper/Pdo/Connection/LastInsertIdTest#1": {"source":"insert into co_invoices (inv_cst_id, inv_status_flag, inv_title, inv_total, inv_created_at) values (1, 1, '%title%', %total%, '%now%')","parse":{"outcome":"throw","value":"Syntax error, unexpected token %%, near to 'total%, '%now%')', when parsing: insert into co_invoices (inv_cst_id, inv_status_flag, inv_title, inv_total, inv_created_at) values (1, 1, '%title%', %total%, '%now%') (134)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/DataMapper/Pdo/Connection/LastInsertIdTest#2": {"source":"select inv_id from co_invoices where inv_title = '","parse":{"outcome":"throw","value":"Scanning error before '' when parsing: select inv_id from co_invoices where inv_title = ' (50)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Scanning error before '' when parsing: select inv_id from co_invoices where inv_title = ' (50)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/DataMapper/Pdo/Connection/QueryTest#1": {"source":"select * from co_invoices WHERE inv_id = 1","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"co_invoices"}}},"where":{"type":61,"left":{"type":355,"name":"inv_id"},"right":{"type":258,"value":"1"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/DataMapper/Pdo/Profiler/MemoryLogger/LogTest#1": {"source":"select","parse":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/DataMapper/Pdo/Profiler/Profiler/StartFinishTest#1": {"source":"select from something","parse":{"outcome":"throw","value":"Syntax error, unexpected token FROM, near to ' something', when parsing: select from something (21)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected token FROM, near to ' something', when parsing: select from something (21)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/DataMapper/Pdo/Profiler/Profiler/StartFinishTest#2": {"source":"select from something #0","parse":{"outcome":"throw","value":"Syntax error, unexpected token FROM, near to ' something #0', when parsing: select from something #0 (24)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected token FROM, near to ' something #0', when parsing: select from something #0 (24)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/DataMapper/Query/Delete/GetStatementTest#1": {"source":"DELETE FROM co_invoices WHERE inv_total > :total AND inv_cst_id = :cstId OR inv_status_flag = :flag RETURNING inv_total, inv_cst_id, inv_status_flag","parse":{"outcome":"throw","value":"Scanner: Unknown opcode 58","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Scanner: Unknown opcode 58","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/DataMapper/Query/Insert/GetLastInsertIdTest#1": {"source":"SELECT inv_id FROM co_invoices WHERE inv_title = '","parse":{"outcome":"throw","value":"Scanning error before '' when parsing: SELECT inv_id FROM co_invoices WHERE inv_title = ' (50)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Scanning error before '' when parsing: SELECT inv_id FROM co_invoices WHERE inv_title = ' (50)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/DataMapper/Query/Insert/GetStatementTest#1": {"source":"INSERT INTO co_invoices (%1$sinv_cst_id%2$s, %1$sinv_total%2$s, %1$sinv_id%2$s, %1$sinv_status_flag%2$s, %1$sinv_created_date%2$s) VALUES (:inv_cst_id, :inv_total, NULL, 1, NOW()) RETURNING inv_id, inv_cst_id, inv_total","parse":{"outcome":"throw","value":"Syntax error, unexpected token %%, near to '1$sinv_cst_id%2$s, %1$sinv_total%2$s, %1$sinv_id%2$s, %1$sinv_status_flag%2$s, %1$sinv_created_date%2$s) VALUES (:inv_cst_id, :inv_total, NULL, 1, NOW()) RETURNING inv_id, inv_cst_id, inv_total', when parsing: INSERT INTO co_invoices (%1$sinv_cst_id%2$s, %1$sinv_total%2$s, %1$sinv_id%2$s, %1$sinv_status_flag%2$s, %1$sinv_created_date%2$s) VALUES (:inv_cst_id, :inv_total, NULL, 1, NOW()) RETURNING inv_id, inv_cst_id, inv_total (219)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected token %%, near to '1$sinv_cst_id%2$s, %1$sinv_total%2$s, %1$sinv_id%2$s, %1$sinv_status_flag%2$s, %1$sinv_created_date%2$s) VALUES (:inv_cst_id, :inv_total, NULL, 1, NOW()) RETURNING inv_id, inv_cst_id, inv_total', when parsing: INSERT INTO co_invoices (%1$sinv_cst_id%2$s, %1$sinv_total%2$s, %1$sinv_id%2$s, %1$sinv_status_flag%2$s, %1$sinv_created_date%2$s) VALUES (:inv_cst_id, :inv_total, NULL, 1, NOW()) RETURNING inv_id, inv_cst_id, inv_total (219)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/DataMapper/Query/Select/ColumnsTest#1": {"source":"SELECT inv_id, inv_cst_id, COUNT(inv_total) FROM co_invoices","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"inv_id"}},{"type":354,"column":{"type":355,"name":"inv_cst_id"}},{"type":354,"column":{"type":350,"name":"COUNT","arguments":[{"type":355,"name":"inv_total"}]}}],"tables":{"qualifiedName":{"type":355,"name":"co_invoices"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"inv_id"}},{"type":354,"column":{"type":355,"name":"inv_cst_id"}},{"type":354,"column":{"type":350,"name":"COUNT","arguments":[{"type":355,"name":"inv_total"}]}}],"tables":{"qualifiedName":{"type":355,"name":"co_invoices"}}}}}}, + "cphalcon:database/DataMapper/Query/Select/DistinctTest#1": {"source":"SELECT DISTINCT inv_id, inc_cst_id FROM co_invoices","parse":{"outcome":"value","value":{"type":309,"select":{"distinct":1,"columns":[{"type":354,"column":{"type":355,"name":"inv_id"}},{"type":354,"column":{"type":355,"name":"inc_cst_id"}}],"tables":{"qualifiedName":{"type":355,"name":"co_invoices"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"distinct":1,"columns":[{"type":354,"column":{"type":355,"name":"inv_id"}},{"type":354,"column":{"type":355,"name":"inc_cst_id"}}],"tables":{"qualifiedName":{"type":355,"name":"co_invoices"}}}}}}, + "cphalcon:database/DataMapper/Query/Select/DistinctTest#2": {"source":"SELECT inv_id, inc_cst_id FROM co_invoices","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"inv_id"}},{"type":354,"column":{"type":355,"name":"inc_cst_id"}}],"tables":{"qualifiedName":{"type":355,"name":"co_invoices"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"inv_id"}},{"type":354,"column":{"type":355,"name":"inc_cst_id"}}],"tables":{"qualifiedName":{"type":355,"name":"co_invoices"}}}}}}, + "cphalcon:database/DataMapper/Query/Select/ForUpdateTest#1": {"source":"SELECT * FROM co_invoices FOR UPDATE","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"co_invoices"}}},"forUpdate":true}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"co_invoices"}}},"forUpdate":true}}}, + "cphalcon:database/DataMapper/Query/Select/ForUpdateTest#2": {"source":"SELECT * FROM co_invoices","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"co_invoices"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"co_invoices"}}}}}}, + "cphalcon:database/DataMapper/Query/Select/FromTest#1": {"source":"SELECT * FROM co_invoices, co_customers","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":[{"qualifiedName":{"type":355,"name":"co_invoices"}},{"qualifiedName":{"type":355,"name":"co_customers"}}]}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":[{"qualifiedName":{"type":355,"name":"co_invoices"}},{"qualifiedName":{"type":355,"name":"co_customers"}}]}}}}, + "cphalcon:database/DataMapper/Query/Select/FromTest#2": {"source":"SELECT *","parse":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/DataMapper/Query/Select/GroupByTest#1": {"source":"SELECT * FROM co_invoices GROUP BY inv_cst_id, inv_status_flag","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"co_invoices"}}},"groupBy":[{"type":355,"name":"inv_cst_id"},{"type":355,"name":"inv_status_flag"}]}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"co_invoices"}}},"groupBy":[{"type":355,"name":"inv_cst_id"},{"type":355,"name":"inv_status_flag"}]}}}, + "cphalcon:database/DataMapper/Query/Select/HavingTest#1": {"source":"SELECT * FROM co_invoices HAVING inv_total = :total","parse":{"outcome":"throw","value":"Scanner: Unknown opcode 58","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Scanner: Unknown opcode 58","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/DataMapper/Query/Select/HavingTest#2": {"source":"SELECT * FROM co_invoices HAVING inv_total = :total AND inv_cst_id = 1 OR (inv_status_flag = 0 OR inv_status_flag = 1)","parse":{"outcome":"throw","value":"Scanner: Unknown opcode 58","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Scanner: Unknown opcode 58","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/DataMapper/Query/Select/JoinTest#1": {"source":"SELECT * FROM co_invoices INNER JOIN co_customers ON inv_cst_id = cst_id","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"co_invoices"}},"joins":{"type":360,"qualified":{"type":355,"name":"co_customers"},"conditions":{"type":61,"left":{"type":355,"name":"inv_cst_id"},"right":{"type":355,"name":"cst_id"}}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"co_invoices"}},"joins":{"type":360,"qualified":{"type":355,"name":"co_customers"},"conditions":{"type":61,"left":{"type":355,"name":"inv_cst_id"},"right":{"type":355,"name":"cst_id"}}}}}}}, + "cphalcon:database/DataMapper/Query/Select/JoinTest#2": {"source":"SELECT * FROM co_invoices LEFT JOIN co_customers ON inv_cst_id = cst_id","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"co_invoices"}},"joins":{"type":361,"qualified":{"type":355,"name":"co_customers"},"conditions":{"type":61,"left":{"type":355,"name":"inv_cst_id"},"right":{"type":355,"name":"cst_id"}}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"co_invoices"}},"joins":{"type":361,"qualified":{"type":355,"name":"co_customers"},"conditions":{"type":61,"left":{"type":355,"name":"inv_cst_id"},"right":{"type":355,"name":"cst_id"}}}}}}}, + "cphalcon:database/DataMapper/Query/Select/JoinTest#3": {"source":"SELECT * FROM co_invoices NATURAL JOIN co_customers ON inv_cst_id = cst_id","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"co_invoices"},"alias":"NATURAL"},"joins":{"type":360,"qualified":{"type":355,"name":"co_customers"},"conditions":{"type":61,"left":{"type":355,"name":"inv_cst_id"},"right":{"type":355,"name":"cst_id"}}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"co_invoices"},"alias":"NATURAL"},"joins":{"type":360,"qualified":{"type":355,"name":"co_customers"},"conditions":{"type":61,"left":{"type":355,"name":"inv_cst_id"},"right":{"type":355,"name":"cst_id"}}}}}}}, + "cphalcon:database/DataMapper/Query/Select/JoinTest#4": {"source":"SELECT * FROM co_invoices RIGHT JOIN co_customers ON inv_cst_id = cst_id","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"co_invoices"}},"joins":{"type":362,"qualified":{"type":355,"name":"co_customers"},"conditions":{"type":61,"left":{"type":355,"name":"inv_cst_id"},"right":{"type":355,"name":"cst_id"}}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"co_invoices"}},"joins":{"type":362,"qualified":{"type":355,"name":"co_customers"},"conditions":{"type":61,"left":{"type":355,"name":"inv_cst_id"},"right":{"type":355,"name":"cst_id"}}}}}}}, + "cphalcon:database/DataMapper/Query/Select/JoinTest#5": {"source":"SELECT * FROM co_invoices LEFT JOIN co_customers ON inv_cst_id = cst_id AND cst_status_flag = :__1__ AND cst_name LIKE :__2__","parse":{"outcome":"throw","value":"Scanner: Unknown opcode 58","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Scanner: Unknown opcode 58","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/DataMapper/Query/Select/LimitOffsetTest#1": {"source":"SELECT * FROM co_invoices LIMIT 10","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"co_invoices"}}},"limit":{"number":{"type":258,"value":"10"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/DataMapper/Query/Select/LimitOffsetTest#2": {"source":"SELECT * FROM co_invoices LIMIT 10 OFFSET 50","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"co_invoices"}}},"limit":{"number":{"type":258,"value":"10"},"offset":{"type":258,"value":"50"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/DataMapper/Query/Select/LimitOffsetTest#3": {"source":"SELECT TOP 10 * FROM co_invoices","parse":{"outcome":"throw","value":"Syntax error, unexpected token INTEGER(10), near to ' * FROM co_invoices', when parsing: SELECT TOP 10 * FROM co_invoices (32)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/DataMapper/Query/Select/LimitOffsetTest#4": {"source":"SELECT * FROM co_invoices OFFSET 50 ROWS FETCH NEXT 10 ROWS ONLY","parse":{"outcome":"throw","value":"Syntax error, unexpected token OFFSET, near to ' 50 ROWS FETCH NEXT 10 ROWS ONLY', when parsing: SELECT * FROM co_invoices OFFSET 50 ROWS FETCH NEXT 10 ROWS ONLY (64)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected token OFFSET, near to ' 50 ROWS FETCH NEXT 10 ROWS ONLY', when parsing: SELECT * FROM co_invoices OFFSET 50 ROWS FETCH NEXT 10 ROWS ONLY (64)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/DataMapper/Query/Select/OrderByTest#1": {"source":"SELECT * FROM co_invoices ORDER BY inv_cst_id, UPPER(inv_title)","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"co_invoices"}}},"orderBy":[{"column":{"type":355,"name":"inv_cst_id"}},{"column":{"type":350,"name":"UPPER","arguments":[{"type":355,"name":"inv_title"}]}}]}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"co_invoices"}}},"orderBy":[{"column":{"type":355,"name":"inv_cst_id"}},{"column":{"type":350,"name":"UPPER","arguments":[{"type":355,"name":"inv_title"}]}}]}}}, + "cphalcon:database/DataMapper/Query/Select/SetFlagTest#1": {"source":"SELECT LOW_PRIORITY * FROM co_invoices","parse":{"outcome":"throw","value":"Syntax error, unexpected token FROM, near to ' co_invoices', when parsing: SELECT LOW_PRIORITY * FROM co_invoices (38)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected token FROM, near to ' co_invoices', when parsing: SELECT LOW_PRIORITY * FROM co_invoices (38)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/DataMapper/Query/Select/SubSelectTest#1": {"source":"SELECT * FROM (SELECT inv_id FROM co_invoices) AS inv","parse":{"outcome":"throw","value":"Syntax error, unexpected token (, near to 'SELECT inv_id FROM co_invoices) AS inv', when parsing: SELECT * FROM (SELECT inv_id FROM co_invoices) AS inv (53)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected token (, near to 'SELECT inv_id FROM co_invoices) AS inv', when parsing: SELECT * FROM (SELECT inv_id FROM co_invoices) AS inv (53)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/DataMapper/Query/Select/UnionAllTest#1": {"source":"SELECT * FROM co_invoices WHERE inv_id = 1 UNION ALL SELECT * FROM co_invoices WHERE inv_id = 2 UNION ALL SELECT * FROM co_invoices WHERE inv_id = 3","parse":{"outcome":"throw","value":"Syntax error, unexpected token IDENTIFIER(UNION), near to ' ALL SELECT * FROM co_invoices WHERE inv_id = 2 UNION ALL SELECT * FROM co_invoices WHERE inv_id = 3', when parsing: SELECT * FROM co_invoices WHERE inv_id = 1 UNION ALL SELECT * FROM co_invoices WHERE inv_id = 2 UNION ALL SELECT * FROM co_invoices WHERE inv_id = 3 (148)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/DataMapper/Query/Select/UnionTest#1": {"source":"SELECT * FROM co_invoices WHERE inv_id = 1 UNION SELECT * FROM co_invoices WHERE inv_id = 2 UNION SELECT * FROM co_invoices WHERE inv_id = 3","parse":{"outcome":"throw","value":"Syntax error, unexpected token IDENTIFIER(UNION), near to ' SELECT * FROM co_invoices WHERE inv_id = 2 UNION SELECT * FROM co_invoices WHERE inv_id = 3', when parsing: SELECT * FROM co_invoices WHERE inv_id = 1 UNION SELECT * FROM co_invoices WHERE inv_id = 2 UNION SELECT * FROM co_invoices WHERE inv_id = 3 (140)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/DataMapper/Query/Select/WhereEqualsTest#1": {"source":"SELECT * FROM co_invoices WHERE inv_id IN (:__1__, :__2__, :__3__) AND inv_cst_id IS NULL AND inv_title = :__4__ AND inv_created_at = NOW()","parse":{"outcome":"throw","value":"Scanner: Unknown opcode 58","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Scanner: Unknown opcode 58","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/DataMapper/Query/Select/WhereTest#1": {"source":"SELECT * FROM co_invoices WHERE inv_total > :__1__ OR inv_status_flag = :status","parse":{"outcome":"throw","value":"Scanner: Unknown opcode 58","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Scanner: Unknown opcode 58","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/DataMapper/Query/Select/WhereTest#2": {"source":"SELECT * FROM co_invoices WHERE inv_id > :__1__","parse":{"outcome":"throw","value":"Scanner: Unknown opcode 58","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Scanner: Unknown opcode 58","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/DataMapper/Query/Select/WhereTest#3": {"source":"SELECT * FROM co_invoices WHERE inv_id > 1 AND inv_total > :total AND inv_cst_id IN (:__1__, :__2__, :__3__) AND inv_status_flag = :__4__","parse":{"outcome":"throw","value":"Scanner: Unknown opcode 58","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/DataMapper/Query/Update/GetStatementTest#1": {"source":"UPDATE co_invoices SET %1$sinv_id%2$s = :inv_id, %1$sinv_cst_id%2$s = :inv_cst_id, %1$sinv_total%2$s = :inv_total, %1$sinv_status_flag%2$s = NULL, %1$sinv_created_date%2$s = NOW() WHERE inv_total > :totalMax AND inv_cst_id = :cstId OR inv_status_flag = :flag","parse":{"outcome":"throw","value":"Syntax error, unexpected token %%, near to '1$sinv_id%2$s = :inv_id, %1$sinv_cst_id%2$s = :inv_cst_id, %1$sinv_total%2$s = :inv_total, %1$sinv_status_flag%2$s = NULL, %1$sinv_created_date%2$s = NOW() WHERE inv_total > :totalMax AND inv_cst_id = :cstId OR inv_status_flag = :flag', when parsing: UPDATE co_invoices SET %1$sinv_id%2$s = :inv_id, %1$sinv_cst_id%2$s = :inv_cst_id, %1$sinv_total%2$s = :inv_total, %1$sinv_status_flag%2$s = NULL, %1$sinv_created_date%2$s = NOW() WHERE inv_total > :totalMax AND inv_cst_id = :cstId OR inv_status_flag = :flag (258)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected token %%, near to '1$sinv_id%2$s = :inv_id, %1$sinv_cst_id%2$s = :inv_cst_id, %1$sinv_total%2$s = :inv_total, %1$sinv_status_flag%2$s = NULL, %1$sinv_created_date%2$s = NOW() WHERE inv_total > :totalMax AND inv_cst_id = :cstId OR inv_status_flag = :flag', when parsing: UPDATE co_invoices SET %1$sinv_id%2$s = :inv_id, %1$sinv_cst_id%2$s = :inv_cst_id, %1$sinv_total%2$s = :inv_total, %1$sinv_status_flag%2$s = NULL, %1$sinv_created_date%2$s = NOW() WHERE inv_total > :totalMax AND inv_cst_id = :cstId OR inv_status_flag = :flag (258)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/DataMapper/Query/Update/GetStatementTest#2": {"source":"UPDATE co_invoices SET %1$sinv_id%2$s = :inv_id, %1$sinv_cst_id%2$s = :inv_cst_id, %1$sinv_total%2$s = :inv_total, %1$sinv_status_flag%2$s = NULL, %1$sinv_created_date%2$s = NOW() WHERE inv_total > :totalMax AND inv_cst_id = :cstId OR inv_status_flag = :flag RETURNING inv_id, inv_cst_id, inv_total","parse":{"outcome":"throw","value":"Syntax error, unexpected token %%, near to '1$sinv_id%2$s = :inv_id, %1$sinv_cst_id%2$s = :inv_cst_id, %1$sinv_total%2$s = :inv_total, %1$sinv_status_flag%2$s = NULL, %1$sinv_created_date%2$s = NOW() WHERE inv_total > :totalMax AND inv_cst_id = :cstId OR inv_status_flag = :flag RETURNING inv_id, inv_cst_id, inv_total', when parsing: UPDATE co_invoices SET %1$sinv_id%2$s = :inv_id, %1$sinv_cst_id%2$s = :inv_cst_id, %1$sinv_total%2$s = :inv_total, %1$sinv_status_flag%2$s = NULL, %1$sinv_created_date%2$s = NOW() WHERE inv_total > :totalMax AND inv_cst_id = :cstId OR inv_status_flag = :flag RETURNING inv_id, inv_cst_id, inv_total (298)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected token %%, near to '1$sinv_id%2$s = :inv_id, %1$sinv_cst_id%2$s = :inv_cst_id, %1$sinv_total%2$s = :inv_total, %1$sinv_status_flag%2$s = NULL, %1$sinv_created_date%2$s = NOW() WHERE inv_total > :totalMax AND inv_cst_id = :cstId OR inv_status_flag = :flag RETURNING inv_id, inv_cst_id, inv_total', when parsing: UPDATE co_invoices SET %1$sinv_id%2$s = :inv_id, %1$sinv_cst_id%2$s = :inv_cst_id, %1$sinv_total%2$s = :inv_total, %1$sinv_status_flag%2$s = NULL, %1$sinv_created_date%2$s = NOW() WHERE inv_total > :totalMax AND inv_cst_id = :cstId OR inv_status_flag = :flag RETURNING inv_id, inv_cst_id, inv_total (298)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Db/Adapter/Pdo/AutoReconnectTest#1": {"source":"SELECT 1 AS num","parse":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Db/Adapter/Pdo/CommitTest#1": {"source":"SELECT inv_title FROM co_invoices WHERE inv_title = ?","parse":{"outcome":"throw","value":"Scanning error before '' when parsing: SELECT inv_title FROM co_invoices WHERE inv_title = ? (53)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Scanning error before '' when parsing: SELECT inv_title FROM co_invoices WHERE inv_title = ? (53)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Db/Adapter/Pdo/ConnectTest#1": {"source":"SELECT 1 AS one","parse":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Db/Adapter/Pdo/ConvertBoundParamsTest#1": {"source":"SELECT * FROM co_invoices WHERE inv_id = ?0 AND inv_title = ?1","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"co_invoices"}}},"where":{"type":61,"left":{"type":61,"left":{"type":355,"name":"inv_id"},"right":{"type":266,"left":{"type":273,"value":"?0"},"right":{"type":355,"name":"inv_title"}}},"right":{"type":273,"value":"?1"}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"co_invoices"}}},"where":{"type":61,"left":{"type":61,"left":{"type":355,"name":"inv_id"},"right":{"type":266,"left":{"type":273,"value":"?0"},"right":{"type":355,"name":"inv_title"}}},"right":{"type":273,"value":"?1"}}}}}, + "cphalcon:database/Db/Adapter/Pdo/CreateViewTest#1": {"source":"SELECT id, name FROM ","parse":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Db/Adapter/Pdo/EscapeStringTest#1": {"source":"SELECT ","parse":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Db/Adapter/Pdo/ExecInsertTest#1": {"source":"insert into co_dialect (\n field_primary,\n field_blob,\n field_binary,\n field_bit,\n field_bigint,\n field_boolean,\n field_char,\n field_decimal,\n field_enum,\n field_integer,\n field_json,\n field_float,\n field_date,\n field_datetime,\n field_time,\n field_timestamp,\n field_mediumint,\n field_smallint,\n field_tinyint,\n field_longtext,\n field_mediumtext,\n field_tinytext,\n field_text,\n field_varbinary,\n field_varchar\n) values (\n ?,\n ?,\n ?,\n ?,\n ?,\n ?,\n ?,\n ?,\n ?,\n ?,\n ?,\n ?,\n ?,\n ?,\n ?,\n ?,\n ?,\n ?,\n ?,\n ?,\n ?,\n ?,\n ?,\n ?,\n ?\n)","parse":{"outcome":"throw","value":"Scanning error before ',\n ?,\n ?,\n...' when parsing: insert into co_dialect (\n field_primary,\n field_blob,\n field_binary,\n field_bit,\n field_bigint,\n field_boolean,\n field_char,\n field_decimal,\n field_enum,\n field_integer,\n field_json,\n field_float,\n field_date,\n field_datetime,\n field_time,\n field_timestamp,\n field_mediumint,\n field_smallint,\n field_tinyint,\n field_longtext,\n field_mediumtext,\n field_tinytext,\n field_text,\n field_varbinary,\n field_varchar\n) values (\n ?,\n ?,\n ?,\n ?,\n ?,\n ?,\n ?,\n ?,\n ?,\n ?,\n ?,\n ?,\n ?,\n ?,\n ?,\n ?,\n ?,\n ?,\n ?,\n ?,\n ?,\n ?,\n ?,\n ?,\n ?\n) (669)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Scanning error before ',\n ?,\n ?,\n...' when parsing: insert into co_dialect (\n field_primary,\n field_blob,\n field_binary,\n field_bit,\n field_bigint,\n field_boolean,\n field_char,\n field_decimal,\n field_enum,\n field_integer,\n field_json,\n field_float,\n field_date,\n field_datetime,\n field_time,\n field_timestamp,\n field_mediumint,\n field_smallint,\n field_tinyint,\n field_longtext,\n field_mediumtext,\n field_tinytext,\n field_text,\n field_varbinary,\n field_varchar\n) values (\n ?,\n ?,\n ?,\n ?,\n ?,\n ?,\n ?,\n ?,\n ?,\n ?,\n ?,\n ?,\n ?,\n ?,\n ?,\n ?,\n ?,\n ?,\n ?,\n ?,\n ?,\n ?,\n ?,\n ?,\n ?\n) (669)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Db/Adapter/Pdo/ExecutePreparedTest#1": {"source":"SELECT inv_title FROM co_invoices WHERE inv_id = ?","parse":{"outcome":"throw","value":"Scanning error before '' when parsing: SELECT inv_title FROM co_invoices WHERE inv_id = ? (50)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Scanning error before '' when parsing: SELECT inv_title FROM co_invoices WHERE inv_id = ? (50)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Db/Adapter/Pdo/ExecuteTest#1": {"source":"DELETE FROM co_invoices","parse":{"outcome":"value","value":{"type":303,"delete":{"tables":{"qualifiedName":{"type":355,"name":"co_invoices"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":303,"delete":{"tables":{"qualifiedName":{"type":355,"name":"co_invoices"}}}}}}, + "cphalcon:database/Db/Adapter/Pdo/ExecuteTest#2": {"source":"SELECT COUNT(*) FROM co_invoices","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":350,"name":"COUNT","arguments":[{"type":352}]}}],"tables":{"qualifiedName":{"type":355,"name":"co_invoices"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":350,"name":"COUNT","arguments":[{"type":352}]}}],"tables":{"qualifiedName":{"type":355,"name":"co_invoices"}}}}}}, + "cphalcon:database/Db/Adapter/Pdo/FetchAllTest#1": {"source":"SELECT inv_id, inv_title FROM co_invoices ORDER BY inv_id","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"inv_id"}},{"type":354,"column":{"type":355,"name":"inv_title"}}],"tables":{"qualifiedName":{"type":355,"name":"co_invoices"}}},"orderBy":{"column":{"type":355,"name":"inv_id"}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"inv_id"}},{"type":354,"column":{"type":355,"name":"inv_title"}}],"tables":{"qualifiedName":{"type":355,"name":"co_invoices"}}},"orderBy":{"column":{"type":355,"name":"inv_id"}}}}}, + "cphalcon:database/Db/Adapter/Pdo/FetchColumnTest#1": {"source":"SELECT inv_id, inv_title FROM co_invoices WHERE inv_id = ?","parse":{"outcome":"throw","value":"Scanning error before '' when parsing: SELECT inv_id, inv_title FROM co_invoices WHERE inv_id = ? (58)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Scanning error before '' when parsing: SELECT inv_id, inv_title FROM co_invoices WHERE inv_id = ? (58)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Db/Adapter/Pdo/FetchOneTest#1": {"source":"SELECT inv_id FROM co_invoices WHERE inv_id = ?","parse":{"outcome":"throw","value":"Scanning error before '' when parsing: SELECT inv_id FROM co_invoices WHERE inv_id = ? (47)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Scanning error before '' when parsing: SELECT inv_id FROM co_invoices WHERE inv_id = ? (47)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Db/Adapter/Pdo/ForUpdateTest#1": {"source":"SELECT 1 FOR UPDATE","parse":{"outcome":"throw","value":"Syntax error, unexpected token FOR, near to ' UPDATE', when parsing: SELECT 1 FOR UPDATE (19)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Db/Adapter/Pdo/GetErrorInfoTest#1": {"source":"SELECT * FROM definitely_not_a_real_table_zzz","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"definitely_not_a_real_table_zzz"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"definitely_not_a_real_table_zzz"}}}}}}, + "cphalcon:database/Db/Adapter/Pdo/GetRealSQLStatementTest#1": {"source":"SELECT inv_id FROM co_invoices","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"inv_id"}}],"tables":{"qualifiedName":{"type":355,"name":"co_invoices"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"inv_id"}}],"tables":{"qualifiedName":{"type":355,"name":"co_invoices"}}}}}}, + "cphalcon:database/Db/Adapter/Pdo/InsertAsDictTest#1": {"source":"SELECT inv_cst_id, inv_status_flag, inv_title, inv_total FROM co_invoices WHERE inv_title = ?","parse":{"outcome":"throw","value":"Scanning error before '' when parsing: SELECT inv_cst_id, inv_status_flag, inv_title, inv_total FROM co_invoices WHERE inv_title = ? (93)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Scanning error before '' when parsing: SELECT inv_cst_id, inv_status_flag, inv_title, inv_total FROM co_invoices WHERE inv_title = ? (93)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Db/Adapter/Pdo/InsertTest#1": {"source":"Insert test","parse":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Db/Adapter/Pdo/LimitTest#1": {"source":"SELECT 1 LIMIT 10","parse":{"outcome":"throw","value":"Syntax error, unexpected token LIMIT, near to ' 10', when parsing: SELECT 1 LIMIT 10 (17)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Db/Adapter/Pdo/MysqlTest#1": {"source":"SELECT CONSTRAINT_NAME FROM information_schema.KEY_COLUMN_USAGE\n WHERE TABLE_SCHEMA = DATABASE()\n AND TABLE_NAME = '","parse":{"outcome":"throw","value":"Scanning error before '' when parsing: SELECT CONSTRAINT_NAME FROM information_schema.KEY_COLUMN_USAGE\n WHERE TABLE_SCHEMA = DATABASE()\n AND TABLE_NAME = ' (142)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Scanning error before '' when parsing: SELECT CONSTRAINT_NAME FROM information_schema.KEY_COLUMN_USAGE\n WHERE TABLE_SCHEMA = DATABASE()\n AND TABLE_NAME = ' (142)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Db/Adapter/Pdo/Postgresql/QueryTest#1": {"source":"SELECT * FROM co_invoices LIMIT 3","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"co_invoices"}}},"limit":{"number":{"type":258,"value":"3"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Db/Adapter/Pdo/Postgresql/QueryTest#2": {"source":"SELECT * FROM co_invoices LIMIT 5","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"co_invoices"}}},"limit":{"number":{"type":258,"value":"5"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Db/Adapter/Pdo/QueryTest#1": {"source":"SELECT inv_id FROM co_invoices LIMIT 5","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"inv_id"}}],"tables":{"qualifiedName":{"type":355,"name":"co_invoices"}}},"limit":{"number":{"type":258,"value":"5"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Db/Adapter/Pdo/SharedLockTest#1": {"source":"SELECT 1 LOCK IN SHARE MODE","parse":{"outcome":"throw","value":"Syntax error, unexpected token IN, near to ' SHARE MODE', when parsing: SELECT 1 LOCK IN SHARE MODE (27)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Db/Adapter/Pdo/SharedLockTest#2": {"source":"SELECT 1 FOR SHARE","parse":{"outcome":"throw","value":"Syntax error, unexpected token FOR, near to ' SHARE', when parsing: SELECT 1 FOR SHARE (18)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Db/Adapter/Pdo/UpdateAsDictTest#1": {"source":"SELECT inv_title, inv_status_flag FROM co_invoices WHERE inv_id = ?","parse":{"outcome":"throw","value":"Scanning error before '' when parsing: SELECT inv_title, inv_status_flag FROM co_invoices WHERE inv_id = ? (67)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Scanning error before '' when parsing: SELECT inv_title, inv_status_flag FROM co_invoices WHERE inv_id = ? (67)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Db/DbBindTest#1": {"source":"INSERT INTO co_invoices(inv_id, inv_cst_id, inv_status_flag, inv_title, inv_total) VALUES (","parse":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Db/DbBindTest#2": {"source":"UPDATE co_invoices SET inv_title = ?, inv_status_flag = ?","parse":{"outcome":"throw","value":"Scanning error before ', inv_status_fla...' when parsing: UPDATE co_invoices SET inv_title = ?, inv_status_flag = ? (57)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Scanning error before ', inv_status_fla...' when parsing: UPDATE co_invoices SET inv_title = ?, inv_status_flag = ? (57)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Db/DbBindTest#3": {"source":"DELETE FROM co_invoices WHERE inv_status_flag = ?","parse":{"outcome":"throw","value":"Scanning error before '' when parsing: DELETE FROM co_invoices WHERE inv_status_flag = ? (49)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Scanning error before '' when parsing: DELETE FROM co_invoices WHERE inv_status_flag = ? (49)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Db/DbTest#1": {"source":"SELECT COUNT(*) AS cnt FROM co_invoices WHERE inv_title = ? AND inv_status_flag = ?","parse":{"outcome":"throw","value":"Scanning error before ' AND inv_status_...' when parsing: SELECT COUNT(*) AS cnt FROM co_invoices WHERE inv_title = ? AND inv_status_flag = ? (83)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Scanning error before ' AND inv_status_...' when parsing: SELECT COUNT(*) AS cnt FROM co_invoices WHERE inv_title = ? AND inv_status_flag = ? (83)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Db/DbTest#2": {"source":"SELECT inv_id FROM co_invoices ORDER BY inv_id DESC","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"inv_id"}}],"tables":{"qualifiedName":{"type":355,"name":"co_invoices"}}},"orderBy":{"column":{"type":355,"name":"inv_id"},"sort":328}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"inv_id"}}],"tables":{"qualifiedName":{"type":355,"name":"co_invoices"}}},"orderBy":{"column":{"type":355,"name":"inv_id"},"sort":328}}}}, + "cphalcon:database/Db/DbTest#3": {"source":"SELECT * FROM co_invoices WHERE inv_id = ?","parse":{"outcome":"throw","value":"Scanning error before '' when parsing: SELECT * FROM co_invoices WHERE inv_id = ? (42)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Scanning error before '' when parsing: SELECT * FROM co_invoices WHERE inv_id = ? (42)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Db/DbTest#4": {"source":"INSERT INTO co_invoices(inv_id, inv_cst_id, inv_status_flag, inv_title) VALUES (","parse":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Db/DbTest#5": {"source":"SELECT 1 AS one, 2 AS two, 3 AS three","parse":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Db/DbTest#6": {"source":"SELECT * FROM phalcon_test_view","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"phalcon_test_view"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"phalcon_test_view"}}}}}}, + "cphalcon:database/Db/Dialect/AddForeignKeyTest#1": {"source":"delete command","parse":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Db/Dialect/AddForeignKeyTest#2": {"source":"update command","parse":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Db/Dialect/DescribeColumnsTest#1": {"source":"SELECT COLUMN_NAME AS `Field`, COLUMN_TYPE AS `Type`, COLLATION_NAME AS `Collation`, IS_NULLABLE AS `Null`, COLUMN_KEY AS `Key`, COLUMN_DEFAULT AS `Default`, EXTRA AS `Extra`, PRIVILEGES AS `Privileges`, COLUMN_COMMENT AS `Comment`, GENERATION_EXPRESSION AS `GenerationExpression` FROM `INFORMATION_SCHEMA`.`COLUMNS` ","parse":{"outcome":"throw","value":"Scanning error before 'Field`, COLUMN_T...' when parsing: SELECT COLUMN_NAME AS `Field`, COLUMN_TYPE AS `Type`, COLLATION_NAME AS `Collation`, IS_NULLABLE AS `Null`, COLUMN_KEY AS `Key`, COLUMN_DEFAULT AS `Default`, EXTRA AS `Extra`, PRIVILEGES AS `Privileges`, COLUMN_COMMENT AS `Comment`, GENERATION_EXPRESSION AS `GenerationExpression` FROM `INFORMATION_SCHEMA`.`COLUMNS` (317)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Scanning error before 'Field`, COLUMN_T...' when parsing: SELECT COLUMN_NAME AS `Field`, COLUMN_TYPE AS `Type`, COLLATION_NAME AS `Collation`, IS_NULLABLE AS `Null`, COLUMN_KEY AS `Key`, COLUMN_DEFAULT AS `Default`, EXTRA AS `Extra`, PRIVILEGES AS `Privileges`, COLUMN_COMMENT AS `Comment`, GENERATION_EXPRESSION AS `GenerationExpression` FROM `INFORMATION_SCHEMA`.`COLUMNS` (317)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Db/Dialect/DescribeColumnsTest#2": {"source":"SELECT DISTINCT c.column_name AS Field, c.data_type AS Type, c.character_maximum_length AS Size, c.numeric_precision AS NumericSize, c.numeric_scale AS NumericScale, c.is_nullable AS Null, CASE WHEN pkc.column_name NOTNULL THEN 'PRI' ELSE '' END AS Key, CASE WHEN c.data_type LIKE '%int%' AND c.column_default LIKE '%nextval%' THEN 'auto_increment' ELSE '' END AS Extra, c.ordinal_position AS Position, c.column_default, des.description, c.is_generated AS IsGenerated, c.generation_expression AS GenerationExpression FROM information_schema.columns c LEFT JOIN ( SELECT kcu.column_name, kcu.table_name, kcu.table_schema FROM information_schema.table_constraints tc INNER JOIN information_schema.key_column_usage kcu on (kcu.constraint_name = tc.constraint_name and kcu.table_name=tc.table_name and kcu.table_schema=tc.table_schema) WHERE tc.constraint_type='PRIMARY KEY') pkc ON (c.column_name=pkc.column_name AND c.table_schema = pkc.table_schema AND c.table_name=pkc.table_name) LEFT JOIN ( SELECT objsubid, description, relname, nspname FROM pg_description JOIN pg_class ON pg_description.objoid = pg_class.oid JOIN pg_namespace ON pg_class.relnamespace = pg_namespace.oid ) des ON ( des.objsubid = C.ordinal_position AND C.table_schema = des.nspname AND C.TABLE_NAME = des.relname ) ","parse":{"outcome":"throw","value":"Syntax error, unexpected token NULL, near to ', CASE WHEN pkc.column_name NOTNULL THEN 'PRI' ELSE '' END AS Key, CASE WHEN c.data_type LIKE '%int%' AND c.column_default LIKE '%nextval%' THEN 'auto_increment' ELSE '' END AS Extra, c.ordinal_position AS Position, c.column_default, des.description, c.is_generated AS IsGenerated, c.generation_expression AS GenerationExpression FROM information_schema.columns c LEFT JOIN ( SELECT kcu.column_name, kcu.table_name, kcu.table_schema FROM information_schema.table_constraints tc INNER JOIN information_schema.key_column_usage kcu on (kcu.constraint_name = tc.constraint_name and kcu.table_name=tc.table_name and kcu.table_schema=tc.table_schema) WHERE tc.constraint_type='PRIMARY KEY') pkc ON (c.column_name=pkc.column_name AND c.table_schema = pkc.table_schema AND c.table_name=pkc.table_name) LEFT JOIN ( SELECT objsubid, description, relname, nspname FROM pg_description JOIN pg_class ON pg_description.objoid = pg_class.oid JOIN pg_namespace ON pg_class.relnamespace = pg_namespace.oid ) des ON ( des.objsubid = C.ordinal_position AND C.table_schema = des.nspname AND C.TABLE_NAME = des.relname ) ', when parsing: SELECT DISTINCT c.column_name AS Field, c.data_type AS Type, c.character_maximum_length AS Size, c.numeric_precision AS NumericSize, c.numeric_scale AS NumericScale, c.is_nullable AS Null, CASE WHEN pkc.column_name NOTNULL THEN 'PRI' ELSE '' END AS Key, CASE WHEN c.data_type LIKE '%int%' AND c.column_default LIKE '%nextval%' THEN 'auto_increment' ELSE '' END AS Extra, c.ordinal_position AS Position, c.column_default, des.description, c.is_generated AS IsGenerated, c.generation_expression AS GenerationExpression FROM information_schema.columns c LEFT JOIN ( SELECT kcu.column_name, kcu.table_name, kcu.table_schema FROM information_schema.table_constraints tc INNER JOIN information_schema.key_column_usage kcu on (kcu.constraint_name = tc.constraint_name and kcu.table_name=tc.table_name and kcu.table_schema=tc.table_schema) WHERE tc.constraint_type='PRIMARY KEY') pkc ON (c.column_name=pkc.column_name AND c.table_schema = pkc.table_schema AND c.table_name=pkc.table_name) LEFT JOIN ( SELECT objsubid, description, relname, nspname FROM pg_description JOIN pg_class ON pg_description.objoid = pg_class.oid JOIN pg_namespace ON pg_class.relnamespace = pg_namespace.oid ) des ON ( des.objsubid = C.ordinal_position AND C.table_schema = des.nspname AND C.TABLE_NAME = des.relname ) (1287)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected token NULL, near to ', CASE WHEN pkc.column_name NOTNULL THEN 'PRI' ELSE '' END AS Key, CASE WHEN c.data_type LIKE '%int%' AND c.column_default LIKE '%nextval%' THEN 'auto_increment' ELSE '' END AS Extra, c.ordinal_position AS Position, c.column_default, des.description, c.is_generated AS IsGenerated, c.generation_expression AS GenerationExpression FROM information_schema.columns c LEFT JOIN ( SELECT kcu.column_name, kcu.table_name, kcu.table_schema FROM information_schema.table_constraints tc INNER JOIN information_schema.key_column_usage kcu on (kcu.constraint_name = tc.constraint_name and kcu.table_name=tc.table_name and kcu.table_schema=tc.table_schema) WHERE tc.constraint_type='PRIMARY KEY') pkc ON (c.column_name=pkc.column_name AND c.table_schema = pkc.table_schema AND c.table_name=pkc.table_name) LEFT JOIN ( SELECT objsubid, description, relname, nspname FROM pg_description JOIN pg_class ON pg_description.objoid = pg_class.oid JOIN pg_namespace ON pg_class.relnamespace = pg_namespace.oid ) des ON ( des.objsubid = C.ordinal_position AND C.table_schema = des.nspname AND C.TABLE_NAME = des.relname ) ', when parsing: SELECT DISTINCT c.column_name AS Field, c.data_type AS Type, c.character_maximum_length AS Size, c.numeric_precision AS NumericSize, c.numeric_scale AS NumericScale, c.is_nullable AS Null, CASE WHEN pkc.column_name NOTNULL THEN 'PRI' ELSE '' END AS Key, CASE WHEN c.data_type LIKE '%int%' AND c.column_default LIKE '%nextval%' THEN 'auto_increment' ELSE '' END AS Extra, c.ordinal_position AS Position, c.column_default, des.description, c.is_generated AS IsGenerated, c.generation_expression AS GenerationExpression FROM information_schema.columns c LEFT JOIN ( SELECT kcu.column_name, kcu.table_name, kcu.table_schema FROM information_schema.table_constraints tc INNER JOIN information_schema.key_column_usage kcu on (kcu.constraint_name = tc.constraint_name and kcu.table_name=tc.table_name and kcu.table_schema=tc.table_schema) WHERE tc.constraint_type='PRIMARY KEY') pkc ON (c.column_name=pkc.column_name AND c.table_schema = pkc.table_schema AND c.table_name=pkc.table_name) LEFT JOIN ( SELECT objsubid, description, relname, nspname FROM pg_description JOIN pg_class ON pg_description.objoid = pg_class.oid JOIN pg_namespace ON pg_class.relnamespace = pg_namespace.oid ) des ON ( des.objsubid = C.ordinal_position AND C.table_schema = des.nspname AND C.TABLE_NAME = des.relname ) (1287)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Db/Dialect/DescribeReferencesTest#1": {"source":"SELECT DISTINCT KCU.TABLE_NAME, KCU.COLUMN_NAME, KCU.CONSTRAINT_NAME, KCU.REFERENCED_TABLE_SCHEMA, KCU.REFERENCED_TABLE_NAME, KCU.REFERENCED_COLUMN_NAME, RC.UPDATE_RULE, RC.DELETE_RULE FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE AS KCU LEFT JOIN INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS AS RC ON RC.CONSTRAINT_NAME = KCU.CONSTRAINT_NAME AND RC.CONSTRAINT_SCHEMA = KCU.CONSTRAINT_SCHEMA WHERE KCU.REFERENCED_TABLE_NAME IS NOT NULL AND KCU.CONSTRAINT_SCHEMA = 'schema' AND KCU.TABLE_NAME = 'table'","parse":{"outcome":"value","value":{"type":309,"select":{"distinct":1,"columns":[{"type":354,"column":{"type":355,"domain":"KCU","name":"TABLE_NAME"}},{"type":354,"column":{"type":355,"domain":"KCU","name":"COLUMN_NAME"}},{"type":354,"column":{"type":355,"domain":"KCU","name":"CONSTRAINT_NAME"}},{"type":354,"column":{"type":355,"domain":"KCU","name":"REFERENCED_TABLE_SCHEMA"}},{"type":354,"column":{"type":355,"domain":"KCU","name":"REFERENCED_TABLE_NAME"}},{"type":354,"column":{"type":355,"domain":"KCU","name":"REFERENCED_COLUMN_NAME"}},{"type":354,"column":{"type":355,"domain":"RC","name":"UPDATE_RULE"}},{"type":354,"column":{"type":355,"domain":"RC","name":"DELETE_RULE"}}],"tables":{"qualifiedName":{"type":355,"domain":"INFORMATION_SCHEMA","name":"KEY_COLUMN_USAGE"},"alias":"KCU"},"joins":{"type":361,"qualified":{"type":355,"domain":"INFORMATION_SCHEMA","name":"REFERENTIAL_CONSTRAINTS"},"alias":{"type":355,"name":"RC"},"conditions":{"type":61,"left":{"type":61,"left":{"type":355,"domain":"RC","name":"CONSTRAINT_NAME"},"right":{"type":266,"left":{"type":355,"domain":"KCU","name":"CONSTRAINT_NAME"},"right":{"type":355,"domain":"RC","name":"CONSTRAINT_SCHEMA"}}},"right":{"type":355,"domain":"KCU","name":"CONSTRAINT_SCHEMA"}}}},"where":{"type":61,"left":{"type":61,"left":{"type":266,"left":{"type":366,"left":{"type":355,"domain":"KCU","name":"REFERENCED_TABLE_NAME"}},"right":{"type":355,"domain":"KCU","name":"CONSTRAINT_SCHEMA"}},"right":{"type":266,"left":{"type":260,"value":"schema"},"right":{"type":355,"domain":"KCU","name":"TABLE_NAME"}}},"right":{"type":260,"value":"table"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Db/Dialect/DescribeReferencesTest#2": {"source":"SELECT DISTINCT tc.table_name AS TABLE_NAME, kcu.column_name AS COLUMN_NAME, tc.constraint_name AS CONSTRAINT_NAME, tc.table_catalog AS REFERENCED_TABLE_SCHEMA, ccu.table_name AS REFERENCED_TABLE_NAME, ccu.column_name AS REFERENCED_COLUMN_NAME, rc.update_rule AS UPDATE_RULE, rc.delete_rule AS DELETE_RULE FROM information_schema.table_constraints AS tc JOIN information_schema.key_column_usage AS kcu ON tc.constraint_name = kcu.constraint_name JOIN information_schema.constraint_column_usage AS ccu ON ccu.constraint_name = tc.constraint_name JOIN information_schema.referential_constraints rc ON tc.constraint_catalog = rc.constraint_catalog AND tc.constraint_schema = rc.constraint_schema AND tc.constraint_name = rc.constraint_name AND tc.constraint_type = 'FOREIGN KEY' WHERE constraint_type = 'FOREIGN KEY' AND tc.table_schema = 'schema' AND tc.table_name='table'","parse":{"outcome":"value","value":{"type":309,"select":{"distinct":1,"columns":[{"type":354,"column":{"type":355,"domain":"tc","name":"table_name"},"alias":"TABLE_NAME"},{"type":354,"column":{"type":355,"domain":"kcu","name":"column_name"},"alias":"COLUMN_NAME"},{"type":354,"column":{"type":355,"domain":"tc","name":"constraint_name"},"alias":"CONSTRAINT_NAME"},{"type":354,"column":{"type":355,"domain":"tc","name":"table_catalog"},"alias":"REFERENCED_TABLE_SCHEMA"},{"type":354,"column":{"type":355,"domain":"ccu","name":"table_name"},"alias":"REFERENCED_TABLE_NAME"},{"type":354,"column":{"type":355,"domain":"ccu","name":"column_name"},"alias":"REFERENCED_COLUMN_NAME"},{"type":354,"column":{"type":355,"domain":"rc","name":"update_rule"},"alias":"UPDATE_RULE"},{"type":354,"column":{"type":355,"domain":"rc","name":"delete_rule"},"alias":"DELETE_RULE"}],"tables":{"qualifiedName":{"type":355,"domain":"information_schema","name":"table_constraints"},"alias":"tc"},"joins":[{"type":360,"qualified":{"type":355,"domain":"information_schema","name":"key_column_usage"},"alias":{"type":355,"name":"kcu"},"conditions":{"type":61,"left":{"type":355,"domain":"tc","name":"constraint_name"},"right":{"type":355,"domain":"kcu","name":"constraint_name"}}},{"type":360,"qualified":{"type":355,"domain":"information_schema","name":"constraint_column_usage"},"alias":{"type":355,"name":"ccu"},"conditions":{"type":61,"left":{"type":355,"domain":"ccu","name":"constraint_name"},"right":{"type":355,"domain":"tc","name":"constraint_name"}}},{"type":360,"qualified":{"type":355,"domain":"information_schema","name":"referential_constraints"},"alias":{"type":355,"name":"rc"},"conditions":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":355,"domain":"tc","name":"constraint_catalog"},"right":{"type":266,"left":{"type":355,"domain":"rc","name":"constraint_catalog"},"right":{"type":355,"domain":"tc","name":"constraint_schema"}}},"right":{"type":266,"left":{"type":355,"domain":"rc","name":"constraint_schema"},"right":{"type":355,"domain":"tc","name":"constraint_name"}}},"right":{"type":266,"left":{"type":355,"domain":"rc","name":"constraint_name"},"right":{"type":355,"domain":"tc","name":"constraint_type"}}},"right":{"type":260,"value":"FOREIGN KEY"}}}]},"where":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":355,"name":"constraint_type"},"right":{"type":266,"left":{"type":260,"value":"FOREIGN KEY"},"right":{"type":355,"domain":"tc","name":"table_schema"}}},"right":{"type":266,"left":{"type":260,"value":"schema"},"right":{"type":355,"domain":"tc","name":"table_name"}}},"right":{"type":260,"value":"table"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Db/Dialect/DescribeReferencesTest#3": {"source":"SELECT DISTINCT KCU.TABLE_NAME, KCU.COLUMN_NAME, KCU.CONSTRAINT_NAME, KCU.REFERENCED_TABLE_SCHEMA, KCU.REFERENCED_TABLE_NAME, KCU.REFERENCED_COLUMN_NAME, RC.UPDATE_RULE, RC.DELETE_RULE FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE AS KCU LEFT JOIN INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS AS RC ON RC.CONSTRAINT_NAME = KCU.CONSTRAINT_NAME AND RC.CONSTRAINT_SCHEMA = KCU.CONSTRAINT_SCHEMA WHERE KCU.REFERENCED_TABLE_NAME IS NOT NULL AND KCU.CONSTRAINT_SCHEMA = DATABASE() AND KCU.TABLE_NAME = 'table'","parse":{"outcome":"value","value":{"type":309,"select":{"distinct":1,"columns":[{"type":354,"column":{"type":355,"domain":"KCU","name":"TABLE_NAME"}},{"type":354,"column":{"type":355,"domain":"KCU","name":"COLUMN_NAME"}},{"type":354,"column":{"type":355,"domain":"KCU","name":"CONSTRAINT_NAME"}},{"type":354,"column":{"type":355,"domain":"KCU","name":"REFERENCED_TABLE_SCHEMA"}},{"type":354,"column":{"type":355,"domain":"KCU","name":"REFERENCED_TABLE_NAME"}},{"type":354,"column":{"type":355,"domain":"KCU","name":"REFERENCED_COLUMN_NAME"}},{"type":354,"column":{"type":355,"domain":"RC","name":"UPDATE_RULE"}},{"type":354,"column":{"type":355,"domain":"RC","name":"DELETE_RULE"}}],"tables":{"qualifiedName":{"type":355,"domain":"INFORMATION_SCHEMA","name":"KEY_COLUMN_USAGE"},"alias":"KCU"},"joins":{"type":361,"qualified":{"type":355,"domain":"INFORMATION_SCHEMA","name":"REFERENTIAL_CONSTRAINTS"},"alias":{"type":355,"name":"RC"},"conditions":{"type":61,"left":{"type":61,"left":{"type":355,"domain":"RC","name":"CONSTRAINT_NAME"},"right":{"type":266,"left":{"type":355,"domain":"KCU","name":"CONSTRAINT_NAME"},"right":{"type":355,"domain":"RC","name":"CONSTRAINT_SCHEMA"}}},"right":{"type":355,"domain":"KCU","name":"CONSTRAINT_SCHEMA"}}}},"where":{"type":61,"left":{"type":61,"left":{"type":266,"left":{"type":366,"left":{"type":355,"domain":"KCU","name":"REFERENCED_TABLE_NAME"}},"right":{"type":355,"domain":"KCU","name":"CONSTRAINT_SCHEMA"}},"right":{"type":266,"left":{"type":350,"name":"DATABASE"},"right":{"type":355,"domain":"KCU","name":"TABLE_NAME"}}},"right":{"type":260,"value":"table"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Db/Dialect/DescribeReferencesTest#4": {"source":"SELECT DISTINCT tc.table_name AS TABLE_NAME, kcu.column_name AS COLUMN_NAME, tc.constraint_name AS CONSTRAINT_NAME, tc.table_catalog AS REFERENCED_TABLE_SCHEMA, ccu.table_name AS REFERENCED_TABLE_NAME, ccu.column_name AS REFERENCED_COLUMN_NAME, rc.update_rule AS UPDATE_RULE, rc.delete_rule AS DELETE_RULE FROM information_schema.table_constraints AS tc JOIN information_schema.key_column_usage AS kcu ON tc.constraint_name = kcu.constraint_name JOIN information_schema.constraint_column_usage AS ccu ON ccu.constraint_name = tc.constraint_name JOIN information_schema.referential_constraints rc ON tc.constraint_catalog = rc.constraint_catalog AND tc.constraint_schema = rc.constraint_schema AND tc.constraint_name = rc.constraint_name AND tc.constraint_type = 'FOREIGN KEY' WHERE constraint_type = 'FOREIGN KEY' AND tc.table_schema = 'public' AND tc.table_name='table'","parse":{"outcome":"value","value":{"type":309,"select":{"distinct":1,"columns":[{"type":354,"column":{"type":355,"domain":"tc","name":"table_name"},"alias":"TABLE_NAME"},{"type":354,"column":{"type":355,"domain":"kcu","name":"column_name"},"alias":"COLUMN_NAME"},{"type":354,"column":{"type":355,"domain":"tc","name":"constraint_name"},"alias":"CONSTRAINT_NAME"},{"type":354,"column":{"type":355,"domain":"tc","name":"table_catalog"},"alias":"REFERENCED_TABLE_SCHEMA"},{"type":354,"column":{"type":355,"domain":"ccu","name":"table_name"},"alias":"REFERENCED_TABLE_NAME"},{"type":354,"column":{"type":355,"domain":"ccu","name":"column_name"},"alias":"REFERENCED_COLUMN_NAME"},{"type":354,"column":{"type":355,"domain":"rc","name":"update_rule"},"alias":"UPDATE_RULE"},{"type":354,"column":{"type":355,"domain":"rc","name":"delete_rule"},"alias":"DELETE_RULE"}],"tables":{"qualifiedName":{"type":355,"domain":"information_schema","name":"table_constraints"},"alias":"tc"},"joins":[{"type":360,"qualified":{"type":355,"domain":"information_schema","name":"key_column_usage"},"alias":{"type":355,"name":"kcu"},"conditions":{"type":61,"left":{"type":355,"domain":"tc","name":"constraint_name"},"right":{"type":355,"domain":"kcu","name":"constraint_name"}}},{"type":360,"qualified":{"type":355,"domain":"information_schema","name":"constraint_column_usage"},"alias":{"type":355,"name":"ccu"},"conditions":{"type":61,"left":{"type":355,"domain":"ccu","name":"constraint_name"},"right":{"type":355,"domain":"tc","name":"constraint_name"}}},{"type":360,"qualified":{"type":355,"domain":"information_schema","name":"referential_constraints"},"alias":{"type":355,"name":"rc"},"conditions":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":355,"domain":"tc","name":"constraint_catalog"},"right":{"type":266,"left":{"type":355,"domain":"rc","name":"constraint_catalog"},"right":{"type":355,"domain":"tc","name":"constraint_schema"}}},"right":{"type":266,"left":{"type":355,"domain":"rc","name":"constraint_schema"},"right":{"type":355,"domain":"tc","name":"constraint_name"}}},"right":{"type":266,"left":{"type":355,"domain":"rc","name":"constraint_name"},"right":{"type":355,"domain":"tc","name":"constraint_type"}}},"right":{"type":260,"value":"FOREIGN KEY"}}}]},"where":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":355,"name":"constraint_type"},"right":{"type":266,"left":{"type":260,"value":"FOREIGN KEY"},"right":{"type":355,"domain":"tc","name":"table_schema"}}},"right":{"type":266,"left":{"type":260,"value":"public"},"right":{"type":355,"domain":"tc","name":"table_name"}}},"right":{"type":260,"value":"table"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Db/Dialect/ForUpdateModifierTest#1": {"source":"SELECT * FROM robots","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"robots"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"robots"}}}}}}, + "cphalcon:database/Db/Dialect/ListViewsTest#1": {"source":"SELECT `TABLE_NAME` AS view_name FROM `INFORMATION_SCHEMA`.`VIEWS` WHERE `TABLE_SCHEMA` = 'schema' ORDER BY view_name","parse":{"outcome":"throw","value":"Scanning error before 'TABLE_NAME` AS v...' when parsing: SELECT `TABLE_NAME` AS view_name FROM `INFORMATION_SCHEMA`.`VIEWS` WHERE `TABLE_SCHEMA` = 'schema' ORDER BY view_name (117)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Scanning error before 'TABLE_NAME` AS v...' when parsing: SELECT `TABLE_NAME` AS view_name FROM `INFORMATION_SCHEMA`.`VIEWS` WHERE `TABLE_SCHEMA` = 'schema' ORDER BY view_name (117)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Db/Dialect/ListViewsTest#2": {"source":"SELECT viewname AS view_name FROM pg_views WHERE schemaname = 'schema' ORDER BY view_name","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"viewname"},"alias":"view_name"}],"tables":{"qualifiedName":{"type":355,"name":"pg_views"}}},"where":{"type":61,"left":{"type":355,"name":"schemaname"},"right":{"type":260,"value":"schema"}},"orderBy":{"column":{"type":355,"name":"view_name"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Db/Dialect/ListViewsTest#3": {"source":"SELECT tbl_name FROM sqlite_master WHERE type = 'view' ORDER BY tbl_name","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"tbl_name"}}],"tables":{"qualifiedName":{"type":355,"name":"sqlite_master"}}},"where":{"type":61,"left":{"type":355,"name":"type"},"right":{"type":260,"value":"view"}},"orderBy":{"column":{"type":355,"name":"tbl_name"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Db/Dialect/ListViewsTest#4": {"source":"SELECT `TABLE_NAME` AS view_name FROM `INFORMATION_SCHEMA`.`VIEWS` WHERE `TABLE_SCHEMA` = DATABASE() ORDER BY view_name","parse":{"outcome":"throw","value":"Scanning error before 'TABLE_NAME` AS v...' when parsing: SELECT `TABLE_NAME` AS view_name FROM `INFORMATION_SCHEMA`.`VIEWS` WHERE `TABLE_SCHEMA` = DATABASE() ORDER BY view_name (119)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Scanning error before 'TABLE_NAME` AS v...' when parsing: SELECT `TABLE_NAME` AS view_name FROM `INFORMATION_SCHEMA`.`VIEWS` WHERE `TABLE_SCHEMA` = DATABASE() ORDER BY view_name (119)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Db/Dialect/ListViewsTest#5": {"source":"SELECT viewname AS view_name FROM pg_views WHERE schemaname = 'public' ORDER BY view_name","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"viewname"},"alias":"view_name"}],"tables":{"qualifiedName":{"type":355,"name":"pg_views"}}},"where":{"type":61,"left":{"type":355,"name":"schemaname"},"right":{"type":260,"value":"public"}},"orderBy":{"column":{"type":355,"name":"view_name"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Db/Dialect/MaterializedViewTest#1": {"source":"SELECT * FROM robots ORDER BY score DESC LIMIT 100","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"robots"}}},"orderBy":{"column":{"type":355,"name":"score"},"sort":328},"limit":{"number":{"type":258,"value":"100"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Db/Dialect/Mysql/ForUpdateTest#1": {"source":"SELECT * FROM robots FOR UPDATE","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"robots"}}},"forUpdate":true}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"robots"}}},"forUpdate":true}}}, + "cphalcon:database/Db/Dialect/Mysql/GetForeignKeyChecksTest#1": {"source":"SELECT @@foreign_key_checks","parse":{"outcome":"throw","value":"Syntax error, unexpected token @@, near to 'foreign_key_checks', when parsing: SELECT @@foreign_key_checks (27)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected token @@, near to 'foreign_key_checks', when parsing: SELECT @@foreign_key_checks (27)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Db/Dialect/Mysql/LimitTest#1": {"source":"SELECT * FROM robots LIMIT 10","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"robots"}}},"limit":{"number":{"type":258,"value":"10"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Db/Dialect/Mysql/LimitTest#2": {"source":"SELECT * FROM robots LIMIT 10 OFFSET 50","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"robots"}}},"limit":{"number":{"type":258,"value":"10"},"offset":{"type":258,"value":"50"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Db/Dialect/Mysql/SelectTest#1": {"source":"SELECT * FROM `robots`","parse":{"outcome":"throw","value":"Scanning error before 'robots`' when parsing: SELECT * FROM `robots` (22)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Scanning error before 'robots`' when parsing: SELECT * FROM `robots` (22)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Db/Dialect/Mysql/TableOptionsTest#1": {"source":"SELECT TABLES.TABLE_TYPE AS table_type,TABLES.AUTO_INCREMENT AS auto_increment,TABLES.ENGINE AS engine,TABLES.TABLE_COLLATION AS table_collation,TABLES.TABLE_COMMENT AS table_comment FROM INFORMATION_SCHEMA.TABLES WHERE ","parse":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Db/Dialect/OnConflictUpdateTest#1": {"source":"INSERT INTO robots (id) VALUES (1)","parse":{"outcome":"value","value":{"type":306,"qualifiedName":{"type":355,"name":"robots"},"fields":[{"type":355,"name":"id"}],"values":[{"type":258,"value":"1"}]}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Db/Dialect/OnConflictUpdateTest#2": {"source":"INSERT INTO robots (id, name) VALUES (1, 'R2D2')","parse":{"outcome":"value","value":{"type":306,"qualifiedName":{"type":355,"name":"robots"},"fields":[{"type":355,"name":"id"},{"type":355,"name":"name"}],"values":[{"type":258,"value":"1"},{"type":260,"value":"R2D2"}]}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Db/Dialect/OnConflictUpdateTest#3": {"source":"INSERT INTO robots (id, name) VALUES (1, 'R2D2') ON CONFLICT (\"id\") DO UPDATE SET \"name\" = excluded.\"name\"","parse":{"outcome":"throw","value":"Syntax error, unexpected token ON, near to ' CONFLICT (\"id\") DO UPDATE SET \"name\" = excluded.\"name\"', when parsing: INSERT INTO robots (id, name) VALUES (1, 'R2D2') ON CONFLICT (\"id\") DO UPDATE SET \"name\" = excluded.\"name\" (106)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Db/Dialect/OnConflictUpdateTest#4": {"source":"INSERT INTO robots (a, b, c) VALUES (1, 2, 3)","parse":{"outcome":"value","value":{"type":306,"qualifiedName":{"type":355,"name":"robots"},"fields":[{"type":355,"name":"a"},{"type":355,"name":"b"},{"type":355,"name":"c"}],"values":[{"type":258,"value":"1"},{"type":258,"value":"2"},{"type":258,"value":"3"}]}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Db/Dialect/Postgresql/DescribeIndexesTest#1": {"source":"SELECT 0 as c0, t.relname as table_name, i.relname as key_name, 3 as c3, a.attname as column_name FROM pg_class t, pg_class i, pg_index ix, pg_attribute a WHERE t.oid = ix.indrelid AND i.oid = ix.indexrelid AND a.attrelid = t.oid AND a.attnum = ANY(ix.indkey) AND t.relkind = 'r' AND t.relname = 'robots' ORDER BY t.relname, i.relname;","parse":{"outcome":"throw","value":"Scanning error before '' when parsing: SELECT 0 as c0, t.relname as table_name, i.relname as key_name, 3 as c3, a.attname as column_name FROM pg_class t, pg_class i, pg_index ix, pg_attribute a WHERE t.oid = ix.indrelid AND i.oid = ix.indexrelid AND a.attrelid = t.oid AND a.attnum = ANY(ix.indkey) AND t.relkind = 'r' AND t.relname = 'robots' ORDER BY t.relname, i.relname; (335)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Db/Dialect/Postgresql/ListTablesTest#1": {"source":"SELECT table_name FROM information_schema.tables WHERE table_schema = 'public' ORDER BY table_name","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"table_name"}}],"tables":{"qualifiedName":{"type":355,"domain":"information_schema","name":"tables"}}},"where":{"type":61,"left":{"type":355,"name":"table_schema"},"right":{"type":260,"value":"public"}},"orderBy":{"column":{"type":355,"name":"table_name"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Db/Dialect/Postgresql/ListTablesTest#2": {"source":"SELECT table_name FROM information_schema.tables WHERE table_schema = 'myschema' ORDER BY table_name","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"table_name"}}],"tables":{"qualifiedName":{"type":355,"domain":"information_schema","name":"tables"}}},"where":{"type":61,"left":{"type":355,"name":"table_schema"},"right":{"type":260,"value":"myschema"}},"orderBy":{"column":{"type":355,"name":"table_name"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Db/Dialect/Postgresql/SelectTest#1": {"source":"SELECT * FROM \"robots\"","parse":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Db/Dialect/Postgresql/SharedLockTest#1": {"source":"SELECT * FROM robots FOR SHARE","parse":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Db/Dialect/Postgresql/TableOptionsTest#1": {"source":"SELECT obj_description(c.oid, 'pg_class') AS table_comment FROM pg_class c JOIN pg_namespace n ON n.oid = c.relnamespace WHERE c.relname = 'robots' AND ","parse":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Db/Dialect/ReturningTest#1": {"source":"INSERT INTO robots (name) VALUES ('R2D2')","parse":{"outcome":"value","value":{"type":306,"qualifiedName":{"type":355,"name":"robots"},"fields":[{"type":355,"name":"name"}],"values":[{"type":260,"value":"R2D2"}]}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Db/Dialect/ReturningTest#2": {"source":"INSERT INTO robots (name) VALUES ('R2D2') RETURNING \"id\", \"name\"","parse":{"outcome":"throw","value":"Syntax error, unexpected token IDENTIFIER(RETURNING), near to ' \"id\", \"name\"', when parsing: INSERT INTO robots (name) VALUES ('R2D2') RETURNING \"id\", \"name\" (64)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Db/Dialect/ReturningTest#3": {"source":"DELETE FROM robots WHERE id = 1 RETURNING *","parse":{"outcome":"throw","value":"Syntax error, unexpected token IDENTIFIER(RETURNING), near to ' *', when parsing: DELETE FROM robots WHERE id = 1 RETURNING * (43)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Db/Dialect/ReturningTest#4": {"source":"DELETE FROM robots WHERE id = 1","parse":{"outcome":"value","value":{"type":303,"delete":{"tables":{"qualifiedName":{"type":355,"name":"robots"}}},"where":{"type":61,"left":{"type":355,"name":"id"},"right":{"type":258,"value":"1"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Db/Dialect/ReturningTest#5": {"source":"INSERT INTO robots (name) VALUES ('R2D2') RETURNING \"id\"","parse":{"outcome":"throw","value":"Syntax error, unexpected token IDENTIFIER(RETURNING), near to ' \"id\"', when parsing: INSERT INTO robots (name) VALUES ('R2D2') RETURNING \"id\" (56)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Db/Dialect/SharedLockModifierTest#1": {"source":"SELECT * FROM robots FOR SHARE NOWAIT","parse":{"outcome":"throw","value":"Syntax error, unexpected token IDENTIFIER(SHARE), near to ' NOWAIT', when parsing: SELECT * FROM robots FOR SHARE NOWAIT (37)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected token IDENTIFIER(SHARE), near to ' NOWAIT', when parsing: SELECT * FROM robots FOR SHARE NOWAIT (37)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Db/Dialect/SharedLockModifierTest#2": {"source":"SELECT * FROM robots FOR SHARE SKIP LOCKED","parse":{"outcome":"throw","value":"Syntax error, unexpected token IDENTIFIER(SHARE), near to ' SKIP LOCKED', when parsing: SELECT * FROM robots FOR SHARE SKIP LOCKED (42)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected token IDENTIFIER(SHARE), near to ' SKIP LOCKED', when parsing: SELECT * FROM robots FOR SHARE SKIP LOCKED (42)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Db/Dialect/Sqlite/ListIndexesSqlTest#1": {"source":"SELECT sql FROM sqlite_master WHERE type = 'index' AND tbl_name = \"robots\" COLLATE NOCASE","parse":{"outcome":"throw","value":"Syntax error, unexpected token IDENTIFIER(COLLATE), near to ' NOCASE', when parsing: SELECT sql FROM sqlite_master WHERE type = 'index' AND tbl_name = \"robots\" COLLATE NOCASE (89)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Db/Dialect/Sqlite/ListIndexesSqlTest#2": {"source":"SELECT sql FROM sqlite_master WHERE type = 'index' AND tbl_name = \"robots\" COLLATE NOCASE AND name = \"idx_robots_name\" COLLATE NOCASE","parse":{"outcome":"throw","value":"Syntax error, unexpected token IDENTIFIER(COLLATE), near to ' NOCASE AND name = \"idx_robots_name\" COLLATE NOCASE', when parsing: SELECT sql FROM sqlite_master WHERE type = 'index' AND tbl_name = \"robots\" COLLATE NOCASE AND name = \"idx_robots_name\" COLLATE NOCASE (133)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Db/Dialect/Sqlite/ListTablesTest#1": {"source":"SELECT tbl_name FROM sqlite_master WHERE type = 'table' ORDER BY tbl_name","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"tbl_name"}}],"tables":{"qualifiedName":{"type":355,"name":"sqlite_master"}}},"where":{"type":61,"left":{"type":355,"name":"type"},"right":{"type":260,"value":"table"}},"orderBy":{"column":{"type":355,"name":"tbl_name"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Db/Dialect/Sqlite/TableExistsTest#1": {"source":"SELECT CASE WHEN COUNT(*) > 0 THEN 1 ELSE 0 END FROM sqlite_master WHERE type='table' AND tbl_name='robots'","parse":{"outcome":"throw","value":"Syntax error, unexpected token WHEN, near to ' COUNT(*) > 0 THEN 1 ELSE 0 END FROM sqlite_master WHERE type='table' AND tbl_name='robots'', when parsing: SELECT CASE WHEN COUNT(*) > 0 THEN 1 ELSE 0 END FROM sqlite_master WHERE type='table' AND tbl_name='robots' (107)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected token WHEN, near to ' COUNT(*) > 0 THEN 1 ELSE 0 END FROM sqlite_master WHERE type='table' AND tbl_name='robots'', when parsing: SELECT CASE WHEN COUNT(*) > 0 THEN 1 ELSE 0 END FROM sqlite_master WHERE type='table' AND tbl_name='robots' (107)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Db/Dialect/TableExistsTest#1": {"source":"SELECT IF(COUNT(*) > 0, 1, 0) FROM `INFORMATION_SCHEMA`.`TABLES` WHERE `TABLE_NAME`= 'table' AND `TABLE_SCHEMA` = 'schema'","parse":{"outcome":"throw","value":"Scanning error before 'INFORMATION_SCHE...' when parsing: SELECT IF(COUNT(*) > 0, 1, 0) FROM `INFORMATION_SCHEMA`.`TABLES` WHERE `TABLE_NAME`= 'table' AND `TABLE_SCHEMA` = 'schema' (122)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Db/Dialect/TableExistsTest#2": {"source":"SELECT CASE WHEN COUNT(*) > 0 THEN 1 ELSE 0 END FROM information_schema.tables WHERE table_schema = 'schema' AND table_name='table'","parse":{"outcome":"throw","value":"Syntax error, unexpected token WHEN, near to ' COUNT(*) > 0 THEN 1 ELSE 0 END FROM information_schema.tables WHERE table_schema = 'schema' AND table_name='table'', when parsing: SELECT CASE WHEN COUNT(*) > 0 THEN 1 ELSE 0 END FROM information_schema.tables WHERE table_schema = 'schema' AND table_name='table' (131)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected token WHEN, near to ' COUNT(*) > 0 THEN 1 ELSE 0 END FROM information_schema.tables WHERE table_schema = 'schema' AND table_name='table'', when parsing: SELECT CASE WHEN COUNT(*) > 0 THEN 1 ELSE 0 END FROM information_schema.tables WHERE table_schema = 'schema' AND table_name='table' (131)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Db/Dialect/TableExistsTest#3": {"source":"SELECT CASE WHEN COUNT(*) > 0 THEN 1 ELSE 0 END FROM sqlite_master WHERE type='table' AND tbl_name='table'","parse":{"outcome":"throw","value":"Syntax error, unexpected token WHEN, near to ' COUNT(*) > 0 THEN 1 ELSE 0 END FROM sqlite_master WHERE type='table' AND tbl_name='table'', when parsing: SELECT CASE WHEN COUNT(*) > 0 THEN 1 ELSE 0 END FROM sqlite_master WHERE type='table' AND tbl_name='table' (106)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected token WHEN, near to ' COUNT(*) > 0 THEN 1 ELSE 0 END FROM sqlite_master WHERE type='table' AND tbl_name='table'', when parsing: SELECT CASE WHEN COUNT(*) > 0 THEN 1 ELSE 0 END FROM sqlite_master WHERE type='table' AND tbl_name='table' (106)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Db/Dialect/TableExistsTest#4": {"source":"SELECT IF(COUNT(*) > 0, 1, 0) FROM `INFORMATION_SCHEMA`.`TABLES` WHERE `TABLE_NAME` = 'table' AND `TABLE_SCHEMA` = DATABASE()","parse":{"outcome":"throw","value":"Scanning error before 'INFORMATION_SCHE...' when parsing: SELECT IF(COUNT(*) > 0, 1, 0) FROM `INFORMATION_SCHEMA`.`TABLES` WHERE `TABLE_NAME` = 'table' AND `TABLE_SCHEMA` = DATABASE() (125)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Db/Dialect/TableExistsTest#5": {"source":"SELECT CASE WHEN COUNT(*) > 0 THEN 1 ELSE 0 END FROM information_schema.tables WHERE table_schema = 'public' AND table_name='table'","parse":{"outcome":"throw","value":"Syntax error, unexpected token WHEN, near to ' COUNT(*) > 0 THEN 1 ELSE 0 END FROM information_schema.tables WHERE table_schema = 'public' AND table_name='table'', when parsing: SELECT CASE WHEN COUNT(*) > 0 THEN 1 ELSE 0 END FROM information_schema.tables WHERE table_schema = 'public' AND table_name='table' (131)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected token WHEN, near to ' COUNT(*) > 0 THEN 1 ELSE 0 END FROM information_schema.tables WHERE table_schema = 'public' AND table_name='table'', when parsing: SELECT CASE WHEN COUNT(*) > 0 THEN 1 ELSE 0 END FROM information_schema.tables WHERE table_schema = 'public' AND table_name='table' (131)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Db/Dialect/TruncateTableTest#1": {"source":"DELETE FROM \"schema\".\"table\"","parse":{"outcome":"throw","value":"Syntax error, unexpected token STRING(schema), near to '.\"table\"', when parsing: DELETE FROM \"schema\".\"table\" (28)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Db/Dialect/TruncateTableTest#2": {"source":"DELETE FROM \"table\"","parse":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Db/Dialect/ViewExistsTest#1": {"source":"SELECT IF(COUNT(*) > 0, 1, 0) FROM `INFORMATION_SCHEMA`.`VIEWS` WHERE `TABLE_NAME`= 'view' AND `TABLE_SCHEMA`='schema'","parse":{"outcome":"throw","value":"Scanning error before 'INFORMATION_SCHE...' when parsing: SELECT IF(COUNT(*) > 0, 1, 0) FROM `INFORMATION_SCHEMA`.`VIEWS` WHERE `TABLE_NAME`= 'view' AND `TABLE_SCHEMA`='schema' (118)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Db/Dialect/ViewExistsTest#2": {"source":"SELECT CASE WHEN COUNT(*) > 0 THEN 1 ELSE 0 END FROM pg_views WHERE viewname='view' AND schemaname='schema'","parse":{"outcome":"throw","value":"Syntax error, unexpected token WHEN, near to ' COUNT(*) > 0 THEN 1 ELSE 0 END FROM pg_views WHERE viewname='view' AND schemaname='schema'', when parsing: SELECT CASE WHEN COUNT(*) > 0 THEN 1 ELSE 0 END FROM pg_views WHERE viewname='view' AND schemaname='schema' (107)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected token WHEN, near to ' COUNT(*) > 0 THEN 1 ELSE 0 END FROM pg_views WHERE viewname='view' AND schemaname='schema'', when parsing: SELECT CASE WHEN COUNT(*) > 0 THEN 1 ELSE 0 END FROM pg_views WHERE viewname='view' AND schemaname='schema' (107)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Db/Dialect/ViewExistsTest#3": {"source":"SELECT CASE WHEN COUNT(*) > 0 THEN 1 ELSE 0 END FROM sqlite_master WHERE type='view' AND tbl_name='view'","parse":{"outcome":"throw","value":"Syntax error, unexpected token WHEN, near to ' COUNT(*) > 0 THEN 1 ELSE 0 END FROM sqlite_master WHERE type='view' AND tbl_name='view'', when parsing: SELECT CASE WHEN COUNT(*) > 0 THEN 1 ELSE 0 END FROM sqlite_master WHERE type='view' AND tbl_name='view' (104)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected token WHEN, near to ' COUNT(*) > 0 THEN 1 ELSE 0 END FROM sqlite_master WHERE type='view' AND tbl_name='view'', when parsing: SELECT CASE WHEN COUNT(*) > 0 THEN 1 ELSE 0 END FROM sqlite_master WHERE type='view' AND tbl_name='view' (104)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Db/Dialect/ViewExistsTest#4": {"source":"SELECT IF(COUNT(*) > 0, 1, 0) FROM `INFORMATION_SCHEMA`.`VIEWS` WHERE `TABLE_NAME`='view' AND `TABLE_SCHEMA` = DATABASE()","parse":{"outcome":"throw","value":"Scanning error before 'INFORMATION_SCHE...' when parsing: SELECT IF(COUNT(*) > 0, 1, 0) FROM `INFORMATION_SCHEMA`.`VIEWS` WHERE `TABLE_NAME`='view' AND `TABLE_SCHEMA` = DATABASE() (121)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Db/Dialect/ViewExistsTest#5": {"source":"SELECT CASE WHEN COUNT(*) > 0 THEN 1 ELSE 0 END FROM pg_views WHERE viewname='view' AND schemaname='public'","parse":{"outcome":"throw","value":"Syntax error, unexpected token WHEN, near to ' COUNT(*) > 0 THEN 1 ELSE 0 END FROM pg_views WHERE viewname='view' AND schemaname='public'', when parsing: SELECT CASE WHEN COUNT(*) > 0 THEN 1 ELSE 0 END FROM pg_views WHERE viewname='view' AND schemaname='public' (107)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected token WHEN, near to ' COUNT(*) > 0 THEN 1 ELSE 0 END FROM pg_views WHERE viewname='view' AND schemaname='public'', when parsing: SELECT CASE WHEN COUNT(*) > 0 THEN 1 ELSE 0 END FROM pg_views WHERE viewname='view' AND schemaname='public' (107)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Db/Profiler/GetLastProfileTest#1": {"source":"SELECT * FROM co_invoices LIMIT 100","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"co_invoices"}}},"limit":{"number":{"type":258,"value":"100"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Db/Profiler/GetProfilesTest#1": {"source":"SELECT * FROM robots WHERE id = 1","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"robots"}}},"where":{"type":61,"left":{"type":355,"name":"id"},"right":{"type":258,"value":"1"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Db/Profiler/ResetTest#1": {"source":"SELECT * FROM co_invoices LIMIT 15","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"co_invoices"}}},"limit":{"number":{"type":258,"value":"15"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Db/Profiler/StartProfileTest#1": {"source":"SELECT * FROM robots WHERE id = ?","parse":{"outcome":"throw","value":"Scanning error before '' when parsing: SELECT * FROM robots WHERE id = ? (33)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Scanning error before '' when parsing: SELECT * FROM robots WHERE id = ? (33)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Db/Result/Pdo/DataSeekTest#1": {"source":"SELECT * FROM co_invoices ORDER BY inv_id","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"co_invoices"}}},"orderBy":{"column":{"type":355,"name":"inv_id"}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"co_invoices"}}},"orderBy":{"column":{"type":355,"name":"inv_id"}}}}}, + "cphalcon:database/Db/Result/Pdo/NumRowsTest#1": {"source":"SELECT *\nFROM co_invoices","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"co_invoices"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"co_invoices"}}}}}}, + "cphalcon:database/Db/Result/Pdo/NumRowsTest#2": {"source":"SELECT COUNT(*) FROM co_invoices GROUP BY inv_cst_id","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":350,"name":"COUNT","arguments":[{"type":352}]}}],"tables":{"qualifiedName":{"type":355,"name":"co_invoices"}}},"groupBy":{"type":355,"name":"inv_cst_id"}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":350,"name":"COUNT","arguments":[{"type":352}]}}],"tables":{"qualifiedName":{"type":355,"name":"co_invoices"}}},"groupBy":{"type":355,"name":"inv_cst_id"}}}}, + "cphalcon:database/Db/Result/Pdo/NumRowsTest#3": {"source":"SELECT * FROM co_invoices LIMIT 2","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"co_invoices"}}},"limit":{"number":{"type":258,"value":"2"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Db/Result/Pdo/NumRowsTest#4": {"source":"SELECT * FROM co_invoices ORDER BY inv_id DESC","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"co_invoices"}}},"orderBy":{"column":{"type":355,"name":"inv_id"},"sort":328}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"co_invoices"}}},"orderBy":{"column":{"type":355,"name":"inv_id"},"sort":328}}}}, + "cphalcon:database/Db/Result/Pdo/NumRowsTest#5": {"source":"SELECT * FROM co_invoices WHERE inv_cst_id = 2","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"co_invoices"}}},"where":{"type":61,"left":{"type":355,"name":"inv_cst_id"},"right":{"type":258,"value":"2"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Db/Result/Pdo/NumRowsTest#6": {"source":"SELECT * FROM co_invoices WHERE inv_cst_id = :cst_id","parse":{"outcome":"throw","value":"Scanner: Unknown opcode 58","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Scanner: Unknown opcode 58","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Forms/Form/ClearTest#1": {"source":"Insert your Password","parse":{"outcome":"throw","value":"Syntax error, unexpected token IDENTIFIER(your), near to ' Password', when parsing: Insert your Password (20)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected token IDENTIFIER(your), near to ' Password', when parsing: Insert your Password (20)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Mvc/Model/CreateTest#1": {"source":"SELECT setval(pg_get_serial_sequence('co_invoices', 'inv_id'), 77)","parse":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Mvc/Model/Criteria/AndWhereTest#1": {"source":"SELECT [Phalcon\\Tests\\Support\\Models\\Invoices].* FROM [Phalcon\\Tests\\Support\\Models\\Invoices] WHERE (inv_cst_id = 1) AND (inv_status_flag = :status:)","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":353,"column":"Phalcon\\Tests\\Support\\Models\\Invoices"}],"tables":{"qualifiedName":{"type":355,"name":"Phalcon\\Tests\\Support\\Models\\Invoices"}}},"where":{"type":266,"left":{"type":356,"left":{"type":61,"left":{"type":355,"name":"inv_cst_id"},"right":{"type":258,"value":"1"}}},"right":{"type":356,"left":{"type":61,"left":{"type":355,"name":"inv_status_flag"},"right":{"type":274,"value":"status"}}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Mvc/Model/Criteria/BetweenWhereTest#1": {"source":"SELECT [Phalcon\\Tests\\Support\\Models\\Invoices].* FROM [Phalcon\\Tests\\Support\\Models\\Invoices] WHERE inv_cst_id BETWEEN :ACP0: AND :ACP1:","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":353,"column":"Phalcon\\Tests\\Support\\Models\\Invoices"}],"tables":{"qualifiedName":{"type":355,"name":"Phalcon\\Tests\\Support\\Models\\Invoices"}}},"where":{"type":331,"left":{"type":355,"name":"inv_cst_id"},"right":{"type":266,"left":{"type":274,"value":"ACP0"},"right":{"type":274,"value":"ACP1"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":353,"column":"Phalcon\\Tests\\Support\\Models\\Invoices"}],"tables":{"qualifiedName":{"type":355,"name":"Phalcon\\Tests\\Support\\Models\\Invoices"}}},"where":{"type":331,"left":{"type":355,"name":"inv_cst_id"},"right":{"type":266,"left":{"type":274,"value":"ACP0"},"right":{"type":274,"value":"ACP1"}}}}}}, + "cphalcon:database/Mvc/Model/Criteria/ColumnsTest#1": {"source":"SELECT inv_id, inv_total FROM [Phalcon\\Tests\\Support\\Models\\Invoices]","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"inv_id"}},{"type":354,"column":{"type":355,"name":"inv_total"}}],"tables":{"qualifiedName":{"type":355,"name":"Phalcon\\Tests\\Support\\Models\\Invoices"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"inv_id"}},{"type":354,"column":{"type":355,"name":"inv_total"}}],"tables":{"qualifiedName":{"type":355,"name":"Phalcon\\Tests\\Support\\Models\\Invoices"}}}}}}, + "cphalcon:database/Mvc/Model/Criteria/ColumnsTest#2": {"source":"SELECT inv_id AS [id], inv_total AS [total] FROM [Phalcon\\Tests\\Support\\Models\\Invoices]","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"inv_id"},"alias":"id"},{"type":354,"column":{"type":355,"name":"inv_total"},"alias":"total"}],"tables":{"qualifiedName":{"type":355,"name":"Phalcon\\Tests\\Support\\Models\\Invoices"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"inv_id"},"alias":"id"},{"type":354,"column":{"type":355,"name":"inv_total"},"alias":"total"}],"tables":{"qualifiedName":{"type":355,"name":"Phalcon\\Tests\\Support\\Models\\Invoices"}}}}}}, + "cphalcon:database/Mvc/Model/Criteria/FromInputTest#1": {"source":"SELECT [Phalcon\\Tests\\Support\\Models\\Invoices].* FROM [Phalcon\\Tests\\Support\\Models\\Invoices] WHERE [inv_id] = :inv_id: AND [inv_cst_id] = :inv_cst_id: AND [inv_status_flag] = :inv_status_flag: AND [inv_title] = :inv_title: AND [inv_total] = :inv_total: AND [inv_created_at] = :inv_created_at:","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":353,"column":"Phalcon\\Tests\\Support\\Models\\Invoices"}],"tables":{"qualifiedName":{"type":355,"name":"Phalcon\\Tests\\Support\\Models\\Invoices"}}},"where":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":355,"name":"inv_id"},"right":{"type":266,"left":{"type":274,"value":"inv_id"},"right":{"type":355,"name":"inv_cst_id"}}},"right":{"type":266,"left":{"type":274,"value":"inv_cst_id"},"right":{"type":355,"name":"inv_status_flag"}}},"right":{"type":266,"left":{"type":274,"value":"inv_status_flag"},"right":{"type":355,"name":"inv_title"}}},"right":{"type":266,"left":{"type":274,"value":"inv_title"},"right":{"type":355,"name":"inv_total"}}},"right":{"type":266,"left":{"type":274,"value":"inv_total"},"right":{"type":355,"name":"inv_created_at"}}},"right":{"type":274,"value":"inv_created_at"}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":353,"column":"Phalcon\\Tests\\Support\\Models\\Invoices"}],"tables":{"qualifiedName":{"type":355,"name":"Phalcon\\Tests\\Support\\Models\\Invoices"}}},"where":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":355,"name":"inv_id"},"right":{"type":266,"left":{"type":274,"value":"inv_id"},"right":{"type":355,"name":"inv_cst_id"}}},"right":{"type":266,"left":{"type":274,"value":"inv_cst_id"},"right":{"type":355,"name":"inv_status_flag"}}},"right":{"type":266,"left":{"type":274,"value":"inv_status_flag"},"right":{"type":355,"name":"inv_title"}}},"right":{"type":266,"left":{"type":274,"value":"inv_title"},"right":{"type":355,"name":"inv_total"}}},"right":{"type":266,"left":{"type":274,"value":"inv_total"},"right":{"type":355,"name":"inv_created_at"}}},"right":{"type":274,"value":"inv_created_at"}}}}}, + "cphalcon:database/Mvc/Model/Criteria/FromInputTest#2": {"source":"SELECT [Phalcon\\Tests\\Support\\Models\\Invoices].* FROM [Phalcon\\Tests\\Support\\Models\\Invoices] WHERE [inv_id] = :inv_id: AND [inv_cst_id] = :inv_cst_id: AND [inv_status_flag] = :inv_status_flag: AND [inv_title] LIKE :inv_title: AND [inv_total] = :inv_total: AND [inv_created_at] = :inv_created_at:","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":353,"column":"Phalcon\\Tests\\Support\\Models\\Invoices"}],"tables":{"qualifiedName":{"type":355,"name":"Phalcon\\Tests\\Support\\Models\\Invoices"}}},"where":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":355,"name":"inv_id"},"right":{"type":266,"left":{"type":274,"value":"inv_id"},"right":{"type":355,"name":"inv_cst_id"}}},"right":{"type":266,"left":{"type":274,"value":"inv_cst_id"},"right":{"type":355,"name":"inv_status_flag"}}},"right":{"type":266,"left":{"type":266,"left":{"type":274,"value":"inv_status_flag"},"right":{"type":268,"left":{"type":355,"name":"inv_title"},"right":{"type":274,"value":"inv_title"}}},"right":{"type":355,"name":"inv_total"}}},"right":{"type":266,"left":{"type":274,"value":"inv_total"},"right":{"type":355,"name":"inv_created_at"}}},"right":{"type":274,"value":"inv_created_at"}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":353,"column":"Phalcon\\Tests\\Support\\Models\\Invoices"}],"tables":{"qualifiedName":{"type":355,"name":"Phalcon\\Tests\\Support\\Models\\Invoices"}}},"where":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":355,"name":"inv_id"},"right":{"type":266,"left":{"type":274,"value":"inv_id"},"right":{"type":355,"name":"inv_cst_id"}}},"right":{"type":266,"left":{"type":274,"value":"inv_cst_id"},"right":{"type":355,"name":"inv_status_flag"}}},"right":{"type":266,"left":{"type":266,"left":{"type":274,"value":"inv_status_flag"},"right":{"type":268,"left":{"type":355,"name":"inv_title"},"right":{"type":274,"value":"inv_title"}}},"right":{"type":355,"name":"inv_total"}}},"right":{"type":266,"left":{"type":274,"value":"inv_total"},"right":{"type":355,"name":"inv_created_at"}}},"right":{"type":274,"value":"inv_created_at"}}}}}, + "cphalcon:database/Mvc/Model/Criteria/GetConditionsTest#1": {"source":"SELECT [Phalcon\\Tests\\Support\\Models\\Invoices].* FROM [Phalcon\\Tests\\Support\\Models\\Invoices] WHERE inv_cst_id = 1","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":353,"column":"Phalcon\\Tests\\Support\\Models\\Invoices"}],"tables":{"qualifiedName":{"type":355,"name":"Phalcon\\Tests\\Support\\Models\\Invoices"}}},"where":{"type":61,"left":{"type":355,"name":"inv_cst_id"},"right":{"type":258,"value":"1"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Mvc/Model/Criteria/GroupByTest#1": {"source":"SELECT [Phalcon\\Tests\\Support\\Models\\Invoices].* FROM [Phalcon\\Tests\\Support\\Models\\Invoices] GROUP BY [inv_cst_id]","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":353,"column":"Phalcon\\Tests\\Support\\Models\\Invoices"}],"tables":{"qualifiedName":{"type":355,"name":"Phalcon\\Tests\\Support\\Models\\Invoices"}}},"groupBy":{"type":355,"name":"inv_cst_id"}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":353,"column":"Phalcon\\Tests\\Support\\Models\\Invoices"}],"tables":{"qualifiedName":{"type":355,"name":"Phalcon\\Tests\\Support\\Models\\Invoices"}}},"groupBy":{"type":355,"name":"inv_cst_id"}}}}, + "cphalcon:database/Mvc/Model/Criteria/HavingTest#1": {"source":"SELECT [Phalcon\\Tests\\Support\\Models\\Invoices].* FROM [Phalcon\\Tests\\Support\\Models\\Invoices] HAVING inv_cst_id = 1","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":353,"column":"Phalcon\\Tests\\Support\\Models\\Invoices"}],"tables":{"qualifiedName":{"type":355,"name":"Phalcon\\Tests\\Support\\Models\\Invoices"}}},"having":{"type":61,"left":{"type":355,"name":"inv_cst_id"},"right":{"type":258,"value":"1"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Mvc/Model/Criteria/InWhereTest#1": {"source":"SELECT [Phalcon\\Tests\\Support\\Models\\Invoices].* FROM [Phalcon\\Tests\\Support\\Models\\Invoices] WHERE inv_cst_id IN (:ACP0:, :ACP1:)","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":353,"column":"Phalcon\\Tests\\Support\\Models\\Invoices"}],"tables":{"qualifiedName":{"type":355,"name":"Phalcon\\Tests\\Support\\Models\\Invoices"}}},"where":{"type":315,"left":{"type":355,"name":"inv_cst_id"},"right":[{"type":274,"value":"ACP0"},{"type":274,"value":"ACP1"}]}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":353,"column":"Phalcon\\Tests\\Support\\Models\\Invoices"}],"tables":{"qualifiedName":{"type":355,"name":"Phalcon\\Tests\\Support\\Models\\Invoices"}}},"where":{"type":315,"left":{"type":355,"name":"inv_cst_id"},"right":[{"type":274,"value":"ACP0"},{"type":274,"value":"ACP1"}]}}}}, + "cphalcon:database/Mvc/Model/Criteria/InnerJoinTest#1": {"source":"SELECT [Phalcon\\Tests\\Support\\Models\\Invoices].* FROM [Phalcon\\Tests\\Support\\Models\\Invoices] INNER JOIN [Phalcon\\Tests\\Support\\Models\\Customers] AS [customer] ON inv_cst_id = cst_id","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":353,"column":"Phalcon\\Tests\\Support\\Models\\Invoices"}],"tables":{"qualifiedName":{"type":355,"name":"Phalcon\\Tests\\Support\\Models\\Invoices"}},"joins":{"type":360,"qualified":{"type":355,"name":"Phalcon\\Tests\\Support\\Models\\Customers"},"alias":{"type":355,"name":"customer"},"conditions":{"type":61,"left":{"type":355,"name":"inv_cst_id"},"right":{"type":355,"name":"cst_id"}}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":353,"column":"Phalcon\\Tests\\Support\\Models\\Invoices"}],"tables":{"qualifiedName":{"type":355,"name":"Phalcon\\Tests\\Support\\Models\\Invoices"}},"joins":{"type":360,"qualified":{"type":355,"name":"Phalcon\\Tests\\Support\\Models\\Customers"},"alias":{"type":355,"name":"customer"},"conditions":{"type":61,"left":{"type":355,"name":"inv_cst_id"},"right":{"type":355,"name":"cst_id"}}}}}}}, + "cphalcon:database/Mvc/Model/Criteria/JoinTest#1": {"source":"SELECT [Phalcon\\Tests\\Support\\Models\\Invoices].* FROM [Phalcon\\Tests\\Support\\Models\\Invoices] JOIN [Phalcon\\Tests\\Support\\Models\\Customers] AS [customer] ON inv_cst_id = cst_id","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":353,"column":"Phalcon\\Tests\\Support\\Models\\Invoices"}],"tables":{"qualifiedName":{"type":355,"name":"Phalcon\\Tests\\Support\\Models\\Invoices"}},"joins":{"type":360,"qualified":{"type":355,"name":"Phalcon\\Tests\\Support\\Models\\Customers"},"alias":{"type":355,"name":"customer"},"conditions":{"type":61,"left":{"type":355,"name":"inv_cst_id"},"right":{"type":355,"name":"cst_id"}}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":353,"column":"Phalcon\\Tests\\Support\\Models\\Invoices"}],"tables":{"qualifiedName":{"type":355,"name":"Phalcon\\Tests\\Support\\Models\\Invoices"}},"joins":{"type":360,"qualified":{"type":355,"name":"Phalcon\\Tests\\Support\\Models\\Customers"},"alias":{"type":355,"name":"customer"},"conditions":{"type":61,"left":{"type":355,"name":"inv_cst_id"},"right":{"type":355,"name":"cst_id"}}}}}}}, + "cphalcon:database/Mvc/Model/Criteria/LeftJoinTest#1": {"source":"SELECT [Phalcon\\Tests\\Support\\Models\\Invoices].* FROM [Phalcon\\Tests\\Support\\Models\\Invoices] LEFT JOIN [Phalcon\\Tests\\Support\\Models\\Customers] AS [customer] ON inv_cst_id = cst_id","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":353,"column":"Phalcon\\Tests\\Support\\Models\\Invoices"}],"tables":{"qualifiedName":{"type":355,"name":"Phalcon\\Tests\\Support\\Models\\Invoices"}},"joins":{"type":361,"qualified":{"type":355,"name":"Phalcon\\Tests\\Support\\Models\\Customers"},"alias":{"type":355,"name":"customer"},"conditions":{"type":61,"left":{"type":355,"name":"inv_cst_id"},"right":{"type":355,"name":"cst_id"}}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":353,"column":"Phalcon\\Tests\\Support\\Models\\Invoices"}],"tables":{"qualifiedName":{"type":355,"name":"Phalcon\\Tests\\Support\\Models\\Invoices"}},"joins":{"type":361,"qualified":{"type":355,"name":"Phalcon\\Tests\\Support\\Models\\Customers"},"alias":{"type":355,"name":"customer"},"conditions":{"type":61,"left":{"type":355,"name":"inv_cst_id"},"right":{"type":355,"name":"cst_id"}}}}}}}, + "cphalcon:database/Mvc/Model/Criteria/LimitTest#1": {"source":"SELECT [Phalcon\\Tests\\Support\\Models\\Invoices].* FROM [Phalcon\\Tests\\Support\\Models\\Invoices] LIMIT :APL0:","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":353,"column":"Phalcon\\Tests\\Support\\Models\\Invoices"}],"tables":{"qualifiedName":{"type":355,"name":"Phalcon\\Tests\\Support\\Models\\Invoices"}}},"limit":{"number":{"type":274,"value":"APL0"}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":353,"column":"Phalcon\\Tests\\Support\\Models\\Invoices"}],"tables":{"qualifiedName":{"type":355,"name":"Phalcon\\Tests\\Support\\Models\\Invoices"}}},"limit":{"number":{"type":274,"value":"APL0"}}}}}, + "cphalcon:database/Mvc/Model/Criteria/LimitTest#2": {"source":"SELECT [Phalcon\\Tests\\Support\\Models\\Invoices].* FROM [Phalcon\\Tests\\Support\\Models\\Invoices] LIMIT :APL0: OFFSET :APL1:","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":353,"column":"Phalcon\\Tests\\Support\\Models\\Invoices"}],"tables":{"qualifiedName":{"type":355,"name":"Phalcon\\Tests\\Support\\Models\\Invoices"}}},"limit":{"number":{"type":274,"value":"APL0"},"offset":{"type":274,"value":"APL1"}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":353,"column":"Phalcon\\Tests\\Support\\Models\\Invoices"}],"tables":{"qualifiedName":{"type":355,"name":"Phalcon\\Tests\\Support\\Models\\Invoices"}}},"limit":{"number":{"type":274,"value":"APL0"},"offset":{"type":274,"value":"APL1"}}}}}, + "cphalcon:database/Mvc/Model/Criteria/LimitTest#3": {"source":"SELECT [Phalcon\\Tests\\Support\\Models\\Invoices].* FROM [Phalcon\\Tests\\Support\\Models\\Invoices]","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":353,"column":"Phalcon\\Tests\\Support\\Models\\Invoices"}],"tables":{"qualifiedName":{"type":355,"name":"Phalcon\\Tests\\Support\\Models\\Invoices"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":353,"column":"Phalcon\\Tests\\Support\\Models\\Invoices"}],"tables":{"qualifiedName":{"type":355,"name":"Phalcon\\Tests\\Support\\Models\\Invoices"}}}}}}, + "cphalcon:database/Mvc/Model/Criteria/NotBetweenWhereTest#1": {"source":"SELECT [Phalcon\\Tests\\Support\\Models\\Invoices].* FROM [Phalcon\\Tests\\Support\\Models\\Invoices] WHERE inv_cst_id NOT BETWEEN :ACP0: AND :ACP1:","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":353,"column":"Phalcon\\Tests\\Support\\Models\\Invoices"}],"tables":{"qualifiedName":{"type":355,"name":"Phalcon\\Tests\\Support\\Models\\Invoices"}}},"where":{"type":332,"left":{"type":355,"name":"inv_cst_id"},"right":{"type":266,"left":{"type":274,"value":"ACP0"},"right":{"type":274,"value":"ACP1"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":353,"column":"Phalcon\\Tests\\Support\\Models\\Invoices"}],"tables":{"qualifiedName":{"type":355,"name":"Phalcon\\Tests\\Support\\Models\\Invoices"}}},"where":{"type":332,"left":{"type":355,"name":"inv_cst_id"},"right":{"type":266,"left":{"type":274,"value":"ACP0"},"right":{"type":274,"value":"ACP1"}}}}}}, + "cphalcon:database/Mvc/Model/Criteria/NotInWhereTest#1": {"source":"SELECT [Phalcon\\Tests\\Support\\Models\\Invoices].* FROM [Phalcon\\Tests\\Support\\Models\\Invoices] WHERE inv_cst_id NOT IN (:ACP0:, :ACP1:)","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":353,"column":"Phalcon\\Tests\\Support\\Models\\Invoices"}],"tables":{"qualifiedName":{"type":355,"name":"Phalcon\\Tests\\Support\\Models\\Invoices"}}},"where":{"type":323,"left":{"type":355,"name":"inv_cst_id"},"right":[{"type":274,"value":"ACP0"},{"type":274,"value":"ACP1"}]}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":353,"column":"Phalcon\\Tests\\Support\\Models\\Invoices"}],"tables":{"qualifiedName":{"type":355,"name":"Phalcon\\Tests\\Support\\Models\\Invoices"}}},"where":{"type":323,"left":{"type":355,"name":"inv_cst_id"},"right":[{"type":274,"value":"ACP0"},{"type":274,"value":"ACP1"}]}}}}, + "cphalcon:database/Mvc/Model/Criteria/OrWhereTest#1": {"source":"SELECT [Phalcon\\Tests\\Support\\Models\\Invoices].* FROM [Phalcon\\Tests\\Support\\Models\\Invoices] WHERE (inv_cst_id = 1) OR (inv_status_flag = :status:)","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":353,"column":"Phalcon\\Tests\\Support\\Models\\Invoices"}],"tables":{"qualifiedName":{"type":355,"name":"Phalcon\\Tests\\Support\\Models\\Invoices"}}},"where":{"type":267,"left":{"type":356,"left":{"type":61,"left":{"type":355,"name":"inv_cst_id"},"right":{"type":258,"value":"1"}}},"right":{"type":356,"left":{"type":61,"left":{"type":355,"name":"inv_status_flag"},"right":{"type":274,"value":"status"}}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Mvc/Model/Criteria/OrderByTest#1": {"source":"SELECT [Phalcon\\Tests\\Support\\Models\\Invoices].* FROM [Phalcon\\Tests\\Support\\Models\\Invoices] ORDER BY inv_cst_id DESC","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":353,"column":"Phalcon\\Tests\\Support\\Models\\Invoices"}],"tables":{"qualifiedName":{"type":355,"name":"Phalcon\\Tests\\Support\\Models\\Invoices"}}},"orderBy":{"column":{"type":355,"name":"inv_cst_id"},"sort":328}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":353,"column":"Phalcon\\Tests\\Support\\Models\\Invoices"}],"tables":{"qualifiedName":{"type":355,"name":"Phalcon\\Tests\\Support\\Models\\Invoices"}}},"orderBy":{"column":{"type":355,"name":"inv_cst_id"},"sort":328}}}}, + "cphalcon:database/Mvc/Model/Criteria/RightJoinTest#1": {"source":"SELECT [Phalcon\\Tests\\Support\\Models\\Invoices].* FROM [Phalcon\\Tests\\Support\\Models\\Invoices] RIGHT JOIN [Phalcon\\Tests\\Support\\Models\\Customers] AS [customer] ON inv_cst_id = cst_id","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":353,"column":"Phalcon\\Tests\\Support\\Models\\Invoices"}],"tables":{"qualifiedName":{"type":355,"name":"Phalcon\\Tests\\Support\\Models\\Invoices"}},"joins":{"type":362,"qualified":{"type":355,"name":"Phalcon\\Tests\\Support\\Models\\Customers"},"alias":{"type":355,"name":"customer"},"conditions":{"type":61,"left":{"type":355,"name":"inv_cst_id"},"right":{"type":355,"name":"cst_id"}}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":353,"column":"Phalcon\\Tests\\Support\\Models\\Invoices"}],"tables":{"qualifiedName":{"type":355,"name":"Phalcon\\Tests\\Support\\Models\\Invoices"}},"joins":{"type":362,"qualified":{"type":355,"name":"Phalcon\\Tests\\Support\\Models\\Customers"},"alias":{"type":355,"name":"customer"},"conditions":{"type":61,"left":{"type":355,"name":"inv_cst_id"},"right":{"type":355,"name":"cst_id"}}}}}}}, + "cphalcon:database/Mvc/Model/GetChangedFieldsTest#1": {"source":"INSERT INTO co_invoices (inv_id, inv_cst_id, inv_status_flag, inv_title, inv_total, inv_created_at) VALUES (99, NULL, NULL, :title, NULL, :createdAt)","parse":{"outcome":"throw","value":"Scanner: Unknown opcode 58","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Mvc/Model/GetUpdatedFieldsTest#1": {"source":"INSERT INTO co_invoices (inv_id, inv_cst_id, inv_status_flag, inv_title, inv_total, inv_created_at) VALUES (98, NULL, NULL, :title, NULL, :createdAt)","parse":{"outcome":"throw","value":"Scanner: Unknown opcode 58","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Mvc/Model/InsertDefaultValuesTest#1": {"source":"INSERT","parse":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Mvc/Model/InsertDefaultValuesTest#2": {"source":"select hex(gen_url_hash) as gen_url_hash from co_generated where gen_id = ","parse":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Mvc/Model/JsonSerializeTest#1": {"source":"SELECT inv_id FROM ","parse":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Mvc/Model/Manager/CreateQueryTest#1": {"source":"SELECT * FROM ","parse":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Mvc/Model/Manager/ExecuteQueryTest#1": {"source":"SELECT * FROM [%s]","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"%s"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"%s"}}}}}}, + "cphalcon:database/Mvc/Model/Manager/ExecuteQueryTest#2": {"source":"SELECT SUM(inv_total) AS s FROM [%s]","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":350,"name":"SUM","arguments":[{"type":355,"name":"inv_total"}]},"alias":"s"}],"tables":{"qualifiedName":{"type":355,"name":"%s"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":350,"name":"SUM","arguments":[{"type":355,"name":"inv_total"}]},"alias":"s"}],"tables":{"qualifiedName":{"type":355,"name":"%s"}}}}}}, + "cphalcon:database/Mvc/Model/Manager/ExecuteQueryTest#3": {"source":"SELECT i.inv_total FROM [%s] AS i WHERE i.inv_id = :id:","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"domain":"i","name":"inv_total"}}],"tables":{"qualifiedName":{"type":355,"name":"%s"},"alias":"i"}},"where":{"type":61,"left":{"type":355,"domain":"i","name":"inv_id"},"right":{"type":274,"value":"id"}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"domain":"i","name":"inv_total"}}],"tables":{"qualifiedName":{"type":355,"name":"%s"},"alias":"i"}},"where":{"type":61,"left":{"type":355,"domain":"i","name":"inv_id"},"right":{"type":274,"value":"id"}}}}}, + "cphalcon:database/Mvc/Model/Manager/ExecuteQueryTest#4": {"source":"SELECT COUNT(inv_status_flag) FROM [%s] GROUP BY inv_status_flag","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":350,"name":"COUNT","arguments":[{"type":355,"name":"inv_status_flag"}]}}],"tables":{"qualifiedName":{"type":355,"name":"%s"}}},"groupBy":{"type":355,"name":"inv_status_flag"}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":350,"name":"COUNT","arguments":[{"type":355,"name":"inv_status_flag"}]}}],"tables":{"qualifiedName":{"type":355,"name":"%s"}}},"groupBy":{"type":355,"name":"inv_status_flag"}}}}, + "cphalcon:database/Mvc/Model/Manager/ExecuteQueryTest#5": {"source":"INSERT INTO [%s] (inv_total) VALUES (1)","parse":{"outcome":"value","value":{"type":306,"qualifiedName":{"type":355,"name":"%s"},"fields":[{"type":355,"name":"inv_total"}],"values":[{"type":258,"value":"1"}]}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Mvc/Model/Manager/ExecuteQueryTest#6": {"source":"UPDATE [%s] SET inv_total = 0 WHERE inv_id = :id:","parse":{"outcome":"value","value":{"type":300,"update":{"tables":{"qualifiedName":{"type":355,"name":"%s"}},"values":{"column":{"type":355,"name":"inv_total"},"expr":{"type":258,"value":"0"}}},"where":{"type":61,"left":{"type":355,"name":"inv_id"},"right":{"type":274,"value":"id"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Mvc/Model/Manager/ExecuteQueryTest#7": {"source":"DELETE FROM [%s] WHERE inv_id = :id:","parse":{"outcome":"value","value":{"type":303,"delete":{"tables":{"qualifiedName":{"type":355,"name":"%s"}}},"where":{"type":61,"left":{"type":355,"name":"inv_id"},"right":{"type":274,"value":"id"}}}},"parseNoLiterals":{"outcome":"value","value":{"type":303,"delete":{"tables":{"qualifiedName":{"type":355,"name":"%s"}}},"where":{"type":61,"left":{"type":355,"name":"inv_id"},"right":{"type":274,"value":"id"}}}}}, + "cphalcon:database/Mvc/Model/Manager/ExecuteQueryTest#8": {"source":"INSERT INTO [%s] (inv_total) VALUES (0)","parse":{"outcome":"value","value":{"type":306,"qualifiedName":{"type":355,"name":"%s"},"fields":[{"type":355,"name":"inv_total"}],"values":[{"type":258,"value":"0"}]}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Mvc/Model/Manager/ExecuteQueryTest#9": {"source":"UPDATE [%s] SET inv_total = inv_total + :inc: WHERE inv_id = :id:","parse":{"outcome":"value","value":{"type":300,"update":{"tables":{"qualifiedName":{"type":355,"name":"%s"}},"values":{"column":{"type":355,"name":"inv_total"},"expr":{"type":43,"left":{"type":355,"name":"inv_total"},"right":{"type":274,"value":"inc"}}}},"where":{"type":61,"left":{"type":355,"name":"inv_id"},"right":{"type":274,"value":"id"}}}},"parseNoLiterals":{"outcome":"value","value":{"type":300,"update":{"tables":{"qualifiedName":{"type":355,"name":"%s"}},"values":{"column":{"type":355,"name":"inv_total"},"expr":{"type":43,"left":{"type":355,"name":"inv_total"},"right":{"type":274,"value":"inc"}}}},"where":{"type":61,"left":{"type":355,"name":"inv_id"},"right":{"type":274,"value":"id"}}}}}, + "cphalcon:database/Mvc/Model/Manager/StickyConnectionTest#1": {"source":"SELECT","parse":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Mvc/Model/Query/Builder/AndHavingTest#1": {"source":"SELECT * FROM [","parse":{"outcome":"throw","value":"Scanning error before '' when parsing: SELECT * FROM [ (15)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Scanning error before '' when parsing: SELECT * FROM [ (15)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Mvc/Model/Query/Builder/ColumnsTest#1": {"source":"SELECT inv_id, inv_total FROM [","parse":{"outcome":"throw","value":"Scanning error before '' when parsing: SELECT inv_id, inv_total FROM [ (31)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Scanning error before '' when parsing: SELECT inv_id, inv_total FROM [ (31)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Mvc/Model/Query/Builder/ConstructTest#1": {"source":"SELECT [","parse":{"outcome":"throw","value":"Scanning error before '' when parsing: SELECT [ (8)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Scanning error before '' when parsing: SELECT [ (8)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Mvc/Model/Query/Builder/GetGroupByTest#1": {"source":"SELECT inv_status_flag, COUNT(*) FROM [","parse":{"outcome":"throw","value":"Scanning error before '' when parsing: SELECT inv_status_flag, COUNT(*) FROM [ (39)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Scanning error before '' when parsing: SELECT inv_status_flag, COUNT(*) FROM [ (39)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Mvc/Model/Query/Builder/GetGroupByTest#2": {"source":"SELECT DATE_PART('year', inv_created_at) year, inv_status_flag, COUNT(*) count FROM [","parse":{"outcome":"throw","value":"Scanning error before '' when parsing: SELECT DATE_PART('year', inv_created_at) year, inv_status_flag, COUNT(*) count FROM [ (85)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Mvc/Model/Query/Builder/GetPhqlTest#1": {"source":"SELECT inv_id, inv_title, inv_status_flag FROM [","parse":{"outcome":"throw","value":"Scanning error before '' when parsing: SELECT inv_id, inv_title, inv_status_flag FROM [ (48)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Scanning error before '' when parsing: SELECT inv_id, inv_title, inv_status_flag FROM [ (48)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Mvc/Model/Query/Builder/OrderByTest#1": {"source":"SELECT inv_id, inv_title FROM [Phalcon\\Tests\\Support\\Models\\Invoices] ORDER BY inv_title","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"inv_id"}},{"type":354,"column":{"type":355,"name":"inv_title"}}],"tables":{"qualifiedName":{"type":355,"name":"Phalcon\\Tests\\Support\\Models\\Invoices"}}},"orderBy":{"column":{"type":355,"name":"inv_title"}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"inv_id"}},{"type":354,"column":{"type":355,"name":"inv_title"}}],"tables":{"qualifiedName":{"type":355,"name":"Phalcon\\Tests\\Support\\Models\\Invoices"}}},"orderBy":{"column":{"type":355,"name":"inv_title"}}}}}, + "cphalcon:database/Mvc/Model/Query/Builder/OrderByTest#2": {"source":"SELECT inv_id, inv_title FROM [Phalcon\\Tests\\Support\\Models\\Invoices] ORDER BY inv_title DESC","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"inv_id"}},{"type":354,"column":{"type":355,"name":"inv_title"}}],"tables":{"qualifiedName":{"type":355,"name":"Phalcon\\Tests\\Support\\Models\\Invoices"}}},"orderBy":{"column":{"type":355,"name":"inv_title"},"sort":328}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"inv_id"}},{"type":354,"column":{"type":355,"name":"inv_title"}}],"tables":{"qualifiedName":{"type":355,"name":"Phalcon\\Tests\\Support\\Models\\Invoices"}}},"orderBy":{"column":{"type":355,"name":"inv_title"},"sort":328}}}}, + "cphalcon:database/Mvc/Model/Query/Builder/OrderByTest#3": {"source":"SELECT inv_id, inv_title FROM [Phalcon\\Tests\\Support\\Models\\Invoices] ORDER BY COALESCE(inv_a, inv_b)","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"inv_id"}},{"type":354,"column":{"type":355,"name":"inv_title"}}],"tables":{"qualifiedName":{"type":355,"name":"Phalcon\\Tests\\Support\\Models\\Invoices"}}},"orderBy":{"column":{"type":350,"name":"COALESCE","arguments":[{"type":355,"name":"inv_a"},{"type":355,"name":"inv_b"}]}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"inv_id"}},{"type":354,"column":{"type":355,"name":"inv_title"}}],"tables":{"qualifiedName":{"type":355,"name":"Phalcon\\Tests\\Support\\Models\\Invoices"}}},"orderBy":{"column":{"type":350,"name":"COALESCE","arguments":[{"type":355,"name":"inv_a"},{"type":355,"name":"inv_b"}]}}}}}, + "cphalcon:database/Mvc/Model/Query/Builder/OrderByTest#4": {"source":"SELECT inv_id, inv_title FROM [Phalcon\\Tests\\Support\\Models\\Invoices] ORDER BY ","parse":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Mvc/Model/Query/Builder/OrderByTest#5": {"source":"SELECT inv_id, inv_title FROM [Phalcon\\Tests\\Support\\Models\\Invoices] ORDER BY CASE WHEN inv_status_flag = 1 THEN 0 ELSE 1 END ASC, NOT inv_status_flag, [inv_title] DESC","parse":{"outcome":"throw","value":"Syntax error, unexpected token WHEN, near to ' inv_status_flag = 1 THEN 0 ELSE 1 END ASC, NOT inv_status_flag, [inv_title] DESC', when parsing: SELECT inv_id, inv_title FROM [Phalcon\\Tests\\Support\\Models\\Invoices] ORDER BY CASE WHEN inv_status_flag = 1 THEN 0 ELSE 1 END ASC, NOT inv_status_flag, [inv_title] DESC (169)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected token WHEN, near to ' inv_status_flag = 1 THEN 0 ELSE 1 END ASC, NOT inv_status_flag, [inv_title] DESC', when parsing: SELECT inv_id, inv_title FROM [Phalcon\\Tests\\Support\\Models\\Invoices] ORDER BY CASE WHEN inv_status_flag = 1 THEN 0 ELSE 1 END ASC, NOT inv_status_flag, [inv_title] DESC (169)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Mvc/Model/Query/CustomOperatorSqlTest#1": {"source":"SELECT i.inv_id FROM [%s] AS i WHERE i.inv_title ->> 'a' = 'b'","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"domain":"i","name":"inv_id"}}],"tables":{"qualifiedName":{"type":355,"name":"%s"},"alias":"i"}},"where":{"type":61,"left":{"type":416,"left":{"type":355,"domain":"i","name":"inv_title"},"right":{"type":260,"value":"a"}},"right":{"type":260,"value":"b"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Mvc/Model/Query/CustomOperatorSqlTest#2": {"source":"SELECT i.inv_id FROM [%s] AS i WHERE i.inv_title @> 'x'","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"domain":"i","name":"inv_id"}}],"tables":{"qualifiedName":{"type":355,"name":"%s"},"alias":"i"}},"where":{"type":402,"left":{"type":355,"domain":"i","name":"inv_title"},"right":{"type":260,"value":"x"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Mvc/Model/Query/CustomOperatorSqlTest#3": {"source":"SELECT i.inv_id FROM [%s] AS i WHERE i.inv_title @@ 'x'","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"domain":"i","name":"inv_id"}}],"tables":{"qualifiedName":{"type":355,"name":"%s"},"alias":"i"}},"where":{"type":401,"left":{"type":355,"domain":"i","name":"inv_title"},"right":{"type":260,"value":"x"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Mvc/Model/Query/ExecuteInsertRawValueTest#1": {"source":"INSERT INTO [%s] (inv_cst_id, inv_status_flag, inv_title, inv_total) VALUES (:cst_id:, :status:, :title:, :total:)","parse":{"outcome":"value","value":{"type":306,"qualifiedName":{"type":355,"name":"%s"},"fields":[{"type":355,"name":"inv_cst_id"},{"type":355,"name":"inv_status_flag"},{"type":355,"name":"inv_title"},{"type":355,"name":"inv_total"}],"values":[{"type":274,"value":"cst_id"},{"type":274,"value":"status"},{"type":274,"value":"title"},{"type":274,"value":"total"}]}},"parseNoLiterals":{"outcome":"value","value":{"type":306,"qualifiedName":{"type":355,"name":"%s"},"fields":[{"type":355,"name":"inv_cst_id"},{"type":355,"name":"inv_status_flag"},{"type":355,"name":"inv_title"},{"type":355,"name":"inv_total"}],"values":[{"type":274,"value":"cst_id"},{"type":274,"value":"status"},{"type":274,"value":"title"},{"type":274,"value":"total"}]}}}, + "cphalcon:database/Mvc/Model/Query/ExecuteSelectRawValueSpliceTest#1": {"source":"SELECT * FROM [%s] WHERE inv_status_flag = :p: AND inv_cst_id = :p1:","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"%s"}}},"where":{"type":61,"left":{"type":61,"left":{"type":355,"name":"inv_status_flag"},"right":{"type":266,"left":{"type":274,"value":"p"},"right":{"type":355,"name":"inv_cst_id"}}},"right":{"type":274,"value":"p1"}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"%s"}}},"where":{"type":61,"left":{"type":61,"left":{"type":355,"name":"inv_status_flag"},"right":{"type":266,"left":{"type":274,"value":"p"},"right":{"type":355,"name":"inv_cst_id"}}},"right":{"type":274,"value":"p1"}}}}}, + "cphalcon:database/Mvc/Model/Query/GetSqlTest#1": {"source":"SELECT i.inv_id, i.inv_cst_id FROM [%s] AS i","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"domain":"i","name":"inv_id"}},{"type":354,"column":{"type":355,"domain":"i","name":"inv_cst_id"}}],"tables":{"qualifiedName":{"type":355,"name":"%s"},"alias":"i"}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"domain":"i","name":"inv_id"}},{"type":354,"column":{"type":355,"domain":"i","name":"inv_cst_id"}}],"tables":{"qualifiedName":{"type":355,"name":"%s"},"alias":"i"}}}}}, + "cphalcon:database/Mvc/Model/Query/GetSqlTest#2": {"source":"SELECT `i`.`inv_id` AS `inv_id`, `i`.`inv_cst_id` AS `inv_cst_id` FROM `%s` AS `i`","parse":{"outcome":"throw","value":"Scanning error before 'i`.`inv_id` AS `...' when parsing: SELECT `i`.`inv_id` AS `inv_id`, `i`.`inv_cst_id` AS `inv_cst_id` FROM `%s` AS `i` (82)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Scanning error before 'i`.`inv_id` AS `...' when parsing: SELECT `i`.`inv_id` AS `inv_id`, `i`.`inv_cst_id` AS `inv_cst_id` FROM `%s` AS `i` (82)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Mvc/Model/Query/GetSqlTest#3": {"source":"SELECT \"i\".\"inv_id\" AS \"inv_id\", \"i\".\"inv_cst_id\" AS \"inv_cst_id\" FROM \"%s\" AS \"i\"","parse":{"outcome":"throw","value":"Syntax error, unexpected token DOT, near to '\"inv_id\" AS \"inv_id\", \"i\".\"inv_cst_id\" AS \"inv_cst_id\" FROM \"%s\" AS \"i\"', when parsing: SELECT \"i\".\"inv_id\" AS \"inv_id\", \"i\".\"inv_cst_id\" AS \"inv_cst_id\" FROM \"%s\" AS \"i\" (82)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Mvc/Model/Query/ParseDynamicSchemaTest#1": {"source":"SELECT [%s].* FROM [%s]","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":353,"column":"%s"}],"tables":{"qualifiedName":{"type":355,"name":"%s"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":353,"column":"%s"}],"tables":{"qualifiedName":{"type":355,"name":"%s"}}}}}}, + "cphalcon:database/Mvc/Model/Query/PhqlInjectionTest#1": {"source":"INSERT INTO %s (tok) VALUES ('%s')","parse":{"outcome":"throw","value":"Syntax error, unexpected token %%, near to 's (tok) VALUES ('%s')', when parsing: INSERT INTO %s (tok) VALUES ('%s') (34)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected token %%, near to 's (tok) VALUES ('%s')', when parsing: INSERT INTO %s (tok) VALUES ('%s') (34)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Mvc/Model/Query/PhqlInjectionTest#2": {"source":"SELECT inv_id FROM [%s] WHERE inv_title = 'x\\' OR 1=1 -- '","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"inv_id"}}],"tables":{"qualifiedName":{"type":355,"name":"%s"}}},"where":{"type":61,"left":{"type":355,"name":"inv_title"},"right":{"type":260,"value":"x' OR 1=1 -- "}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Mvc/Model/Query/PhqlInjectionTest#3": {"source":"SELECT [%s](inv_id) FROM [%s]","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":350,"name":"%s","arguments":[{"type":355,"name":"inv_id"}]}}],"tables":{"qualifiedName":{"type":355,"name":"%s"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":350,"name":"%s","arguments":[{"type":355,"name":"inv_id"}]}}],"tables":{"qualifiedName":{"type":355,"name":"%s"}}}}}}, + "cphalcon:database/Mvc/Model/Query/PhqlInjectionTest#4": {"source":"SELECT CAST(inv_id AS [%s]) FROM [%s]","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":333,"left":{"type":355,"name":"inv_id"},"right":{"type":358,"name":"%s"}}}],"tables":{"qualifiedName":{"type":355,"name":"%s"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":333,"left":{"type":355,"name":"inv_id"},"right":{"type":358,"name":"%s"}}}],"tables":{"qualifiedName":{"type":355,"name":"%s"}}}}}}, + "cphalcon:database/Mvc/Model/Query/RollbackOnExceptionTest#1": {"source":"DELETE FROM \\Phalcon\\Tests\\Support\\Models\\RbTestModel","parse":{"outcome":"value","value":{"type":303,"delete":{"tables":{"qualifiedName":{"type":355,"name":"Phalcon\\Tests\\Support\\Models\\RbTestModel"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":303,"delete":{"tables":{"qualifiedName":{"type":355,"name":"Phalcon\\Tests\\Support\\Models\\RbTestModel"}}}}}}, + "cphalcon:database/Mvc/Model/Query/RollbackOnExceptionTest#2": {"source":"INSERT INTO \\Phalcon\\Tests\\Support\\Models\\RbTestModel (id, name) VALUES (1, \"abc\")","parse":{"outcome":"value","value":{"type":306,"qualifiedName":{"type":355,"name":"Phalcon\\Tests\\Support\\Models\\RbTestModel"},"fields":[{"type":355,"name":"id"},{"type":355,"name":"name"}],"values":[{"type":258,"value":"1"},{"type":260,"value":"abc"}]}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Mvc/Model/Query/RollbackOnExceptionTest#3": {"source":"INSERT INTO \\Phalcon\\Tests\\Support\\Models\\RbTestModel (id, name) VALUES (2, \"abc\")","parse":{"outcome":"value","value":{"type":306,"qualifiedName":{"type":355,"name":"Phalcon\\Tests\\Support\\Models\\RbTestModel"},"fields":[{"type":355,"name":"id"},{"type":355,"name":"name"}],"values":[{"type":258,"value":"2"},{"type":260,"value":"abc"}]}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Mvc/Model/Query/RollbackOnExceptionTest#4": {"source":"INSERT INTO \\Phalcon\\Tests\\Support\\Models\\RbTestModel (id, name) VALUES (3, \"abc\")","parse":{"outcome":"value","value":{"type":306,"qualifiedName":{"type":355,"name":"Phalcon\\Tests\\Support\\Models\\RbTestModel"},"fields":[{"type":355,"name":"id"},{"type":355,"name":"name"}],"values":[{"type":258,"value":"3"},{"type":260,"value":"abc"}]}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Mvc/Model/Query/RollbackOnExceptionTest#5": {"source":"INSERT INTO \\Phalcon\\Tests\\Support\\Models\\RbTestModel (id, name) VALUES (4, \"abc\")","parse":{"outcome":"value","value":{"type":306,"qualifiedName":{"type":355,"name":"Phalcon\\Tests\\Support\\Models\\RbTestModel"},"fields":[{"type":355,"name":"id"},{"type":355,"name":"name"}],"values":[{"type":258,"value":"4"},{"type":260,"value":"abc"}]}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Mvc/Model/Query/RollbackOnExceptionTest#6": {"source":"INSERT INTO \\Phalcon\\Tests\\Support\\Models\\RbTestModel (id, name) VALUES (5, \"abc\")","parse":{"outcome":"value","value":{"type":306,"qualifiedName":{"type":355,"name":"Phalcon\\Tests\\Support\\Models\\RbTestModel"},"fields":[{"type":355,"name":"id"},{"type":355,"name":"name"}],"values":[{"type":258,"value":"5"},{"type":260,"value":"abc"}]}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Mvc/Model/Query/RollbackOnExceptionTest#7": {"source":"Update test 1 OK","parse":{"outcome":"throw","value":"Syntax error, unexpected token INTEGER(1), near to ' OK', when parsing: Update test 1 OK (16)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Mvc/Model/Query/RollbackOnExceptionTest#8": {"source":"Update test 2 OK","parse":{"outcome":"throw","value":"Syntax error, unexpected token INTEGER(2), near to ' OK', when parsing: Update test 2 OK (16)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Mvc/Model/Query/RollbackOnExceptionTest#9": {"source":"Update test 3 OK","parse":{"outcome":"throw","value":"Syntax error, unexpected token INTEGER(3), near to ' OK', when parsing: Update test 3 OK (16)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Mvc/Model/Query/RollbackOnExceptionTest#10": {"source":"Update test 4 OK","parse":{"outcome":"throw","value":"Syntax error, unexpected token INTEGER(4), near to ' OK', when parsing: Update test 4 OK (16)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Mvc/Model/Query/RollbackOnExceptionTest#11": {"source":"Update test 5 OK","parse":{"outcome":"throw","value":"Syntax error, unexpected token INTEGER(5), near to ' OK', when parsing: Update test 5 OK (16)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Mvc/Model/Query/RollbackOnExceptionTest#12": {"source":"UPDATE \\Phalcon\\Tests\\Support\\Models\\RbTestModel SET name = :name: WHERE id = :id:","parse":{"outcome":"value","value":{"type":300,"update":{"tables":{"qualifiedName":{"type":355,"name":"Phalcon\\Tests\\Support\\Models\\RbTestModel"}},"values":{"column":{"type":355,"name":"name"},"expr":{"type":274,"value":"name"}}},"where":{"type":61,"left":{"type":355,"name":"id"},"right":{"type":274,"value":"id"}}}},"parseNoLiterals":{"outcome":"value","value":{"type":300,"update":{"tables":{"qualifiedName":{"type":355,"name":"Phalcon\\Tests\\Support\\Models\\RbTestModel"}},"values":{"column":{"type":355,"name":"name"},"expr":{"type":274,"value":"name"}}},"where":{"type":61,"left":{"type":355,"name":"id"},"right":{"type":274,"value":"id"}}}}}, + "cphalcon:database/Mvc/Model/Query/SetResultsetRowClassTest#1": {"source":"SELECT inv_id, inv_title FROM ","parse":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Mvc/Model/Query/StringEscapeTest#1": {"source":"SELECT inv_id FROM [%s] WHERE inv_title = '%s'","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"inv_id"}}],"tables":{"qualifiedName":{"type":355,"name":"%s"}}},"where":{"type":61,"left":{"type":355,"name":"inv_title"},"right":{"type":260,"value":"%s"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Mvc/Model/Query/StringEscapeTest#2": {"source":"SELECT REPLACE(inv_title, '\\n', '
') AS title FROM [%s] WHERE inv_id = 1","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":350,"name":"REPLACE","arguments":[{"type":355,"name":"inv_title"},{"type":260,"value":"\n"},{"type":260,"value":"
"}]},"alias":"title"}],"tables":{"qualifiedName":{"type":355,"name":"%s"}}},"where":{"type":61,"left":{"type":355,"name":"inv_id"},"right":{"type":258,"value":"1"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Mvc/Model/Query/SubSelectArrayPlaceholderTest#1": {"source":"SELECT [%s].* FROM [%s] WHERE inv_id IN (SELECT [%s].inv_id FROM [%s] WHERE inv_id IN ({ids:array}))","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":353,"column":"%s"}],"tables":{"qualifiedName":{"type":355,"name":"%s"}}},"where":{"type":315,"left":{"type":355,"name":"inv_id"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"domain":"%s","name":"inv_id"}}],"tables":{"qualifiedName":{"type":355,"name":"%s"}}},"where":{"type":315,"left":{"type":355,"name":"inv_id"},"right":[{"type":277,"value":"ids:array"}]}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":353,"column":"%s"}],"tables":{"qualifiedName":{"type":355,"name":"%s"}}},"where":{"type":315,"left":{"type":355,"name":"inv_id"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"domain":"%s","name":"inv_id"}}],"tables":{"qualifiedName":{"type":355,"name":"%s"}}},"where":{"type":315,"left":{"type":355,"name":"inv_id"},"right":[{"type":277,"value":"ids:array"}]}}}}}}, + "cphalcon:database/Mvc/Model/Query/UpdateJoinTest#1": {"source":"UPDATE [","parse":{"outcome":"throw","value":"Scanning error before '' when parsing: UPDATE [ (8)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Scanning error before '' when parsing: UPDATE [ (8)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Mvc/Model/Resultset/Complex/CurrentTest#1": {"source":"SELECT copy.*, invoice.* FROM ","parse":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Mvc/Model/Resultset/GetFirstTest#1": {"source":"SELECT i.inv_id FROM [%s] AS i","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"domain":"i","name":"inv_id"}}],"tables":{"qualifiedName":{"type":355,"name":"%s"},"alias":"i"}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"domain":"i","name":"inv_id"}}],"tables":{"qualifiedName":{"type":355,"name":"%s"},"alias":"i"}}}}}, + "cphalcon:database/Mvc/Model/Resultset/GetFirstTest#2": {"source":"SELECT * FROM [%s] AS i","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"%s"},"alias":"i"}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"%s"},"alias":"i"}}}}}, + "cphalcon:database/Mvc/Model/Resultset/GetFirstTest#3": {"source":"SELECT i.inv_id FROM [%s] AS i WHERE inv_total = -42","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"domain":"i","name":"inv_id"}}],"tables":{"qualifiedName":{"type":355,"name":"%s"},"alias":"i"}},"where":{"type":61,"left":{"type":355,"name":"inv_total"},"right":{"type":367,"right":{"type":258,"value":"42"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Mvc/Model/SkipAttributesTest#1": {"source":"UPDATE","parse":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Mvc/Model/SkipAttributesTest#2": {"source":"select inv_created_at from co_invoices where inv_id = 4","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"inv_created_at"}}],"tables":{"qualifiedName":{"type":355,"name":"co_invoices"}}},"where":{"type":61,"left":{"type":355,"name":"inv_id"},"right":{"type":258,"value":"4"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Mvc/Model/SkipAttributesTest#3": {"source":"select inv_created_at from co_invoices where inv_id = ","parse":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Mvc/Model/SkipAttributesTest#4": {"source":"select inv_created_at from co_invoices where inv_id = 3","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"inv_created_at"}}],"tables":{"qualifiedName":{"type":355,"name":"co_invoices"}}},"where":{"type":61,"left":{"type":355,"name":"inv_id"},"right":{"type":258,"value":"3"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Mvc/Model/SpatialHydrationTest#1": {"source":"INSERT INTO co_spatial (id, location) VALUES (1, ST_GeomFromText('POINT(1 2)'))","parse":{"outcome":"value","value":{"type":306,"qualifiedName":{"type":355,"name":"co_spatial"},"fields":[{"type":355,"name":"id"},{"type":355,"name":"location"}],"values":[{"type":258,"value":"1"},{"type":350,"name":"ST_GeomFromText","arguments":[{"type":260,"value":"POINT(1 2)"}]}]}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:database/Mvc/Model/Transaction/ManagerTest#1": {"source":"SELECT COUNT(*) FROM ph_select","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":350,"name":"COUNT","arguments":[{"type":352}]}}],"tables":{"qualifiedName":{"type":355,"name":"ph_select"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":350,"name":"COUNT","arguments":[{"type":352}]}}],"tables":{"qualifiedName":{"type":355,"name":"ph_select"}}}}}}, + "cphalcon:database/Paginator/Adapter/QueryBuilder/PaginateTest#1": {"source":"INSERT INTO co_invoices (inv_cst_id, inv_status_flag, inv_title, inv_total, inv_created_at) ","parse":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:support/Migrations/AlbumMigration#1": {"source":"insert into album (\n id, name, album_id, proto_id\n) values (\n :id, :name, :albumId, :photoId\n)","parse":{"outcome":"throw","value":"Scanner: Unknown opcode 58","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Scanner: Unknown opcode 58","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:support/Migrations/AlbumsMigration#1": {"source":"insert into albums (id, artists_id, name) values (:id, :artistsId, :name)","parse":{"outcome":"throw","value":"Scanner: Unknown opcode 58","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Scanner: Unknown opcode 58","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:support/Migrations/ArtistsMigration#1": {"source":"insert into artists (id, name) values (:id, :name)","parse":{"outcome":"throw","value":"Scanner: Unknown opcode 58","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Scanner: Unknown opcode 58","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:support/Migrations/ComplexDefaultMigration#1": {"source":"insert into complex_default (\n id, created, updated\n) values (\n :id, :created, :updated\n)","parse":{"outcome":"throw","value":"Scanner: Unknown opcode 58","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Scanner: Unknown opcode 58","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:support/Migrations/CustomersDefaultsMigration#1": {"source":"insert into co_customers_defaults (\n cst_id, cst_status_flag, cst_name_first, cst_name_last\n) values (\n :id, :status, :first, :last\n)","parse":{"outcome":"throw","value":"Scanner: Unknown opcode 58","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Scanner: Unknown opcode 58","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:support/Migrations/CustomersMigration#1": {"source":"insert into co_customers (\n cst_id, cst_status_flag, cst_name_first, cst_name_last\n) values (\n :id, :status, :first, :last\n)","parse":{"outcome":"throw","value":"Scanner: Unknown opcode 58","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Scanner: Unknown opcode 58","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:support/Migrations/DialectMigration#1": {"source":"insert into co_dialect (\n field_primary,\n field_blob,\n field_binary,\n field_bit,\n field_bigint,\n field_boolean,\n field_char,\n field_decimal,\n field_enum,\n field_integer,\n field_json,\n field_float,\n field_date,\n field_datetime,\n field_time,\n field_timestamp,\n field_mediumint,\n field_smallint,\n field_tinyint,\n field_longtext,\n field_mediumtext,\n field_tinytext,\n field_text,\n field_varbinary,\n field_varchar\n) values (\n :primary,\n :blob,\n :binary,\n :bit,\n :bigint,\n :boolean,\n :char,\n :decimal,\n :enum,\n :integer,\n :json,\n :float,\n :date,\n :datetime,\n :time,\n :timestamp,\n :mediumint,\n :smallint,\n :tinyint,\n :longtext,\n :mediumtext,\n :tinytext,\n :text,\n :varbinary,\n :varchar\n)","parse":{"outcome":"throw","value":"Scanner: Unknown opcode 58","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Scanner: Unknown opcode 58","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:support/Migrations/FractalDatesMigration#1": {"source":"insert into fractal_dates (id, ftime, fdatetime, ftimestamp)\nvalues (:id, :time, :dateTime, :timeStamp)","parse":{"outcome":"throw","value":"Scanner: Unknown opcode 58","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Scanner: Unknown opcode 58","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:support/Migrations/InvoicesMigration#1": {"source":"insert into co_invoices (\n inv_cst_id, inv_status_flag, inv_title, inv_total, inv_created_at\n) values (\n :custId, :status, :title, :total, :createdAt\n)","parse":{"outcome":"throw","value":"Scanner: Unknown opcode 58","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Scanner: Unknown opcode 58","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:support/Migrations/InvoicesMigration#2": {"source":"insert into co_invoices (\n inv_id, inv_cst_id, inv_status_flag, inv_title, inv_total, inv_created_at\n) values (\n :id, :custId, :status, :title, :total, :createdAt\n)","parse":{"outcome":"throw","value":"Scanner: Unknown opcode 58","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Scanner: Unknown opcode 58","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:support/Migrations/ManufacturersMigration#1": {"source":"insert into co_manufacturers (\n id, name, country, founded_year\n) values (\n :id, :name, :country, :foundedYear\n)","parse":{"outcome":"throw","value":"Scanner: Unknown opcode 58","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Scanner: Unknown opcode 58","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:support/Migrations/ObjectsMigration#1": {"source":"insert into objects (obj_id, obj_name, obj_type)\nvalues (:id, :name, :type)","parse":{"outcome":"throw","value":"Scanner: Unknown opcode 58","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Scanner: Unknown opcode 58","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:support/Migrations/OrdersMigration#1": {"source":"insert into co_orders (\n ord_id, ord_name, ord_status_flag\n) values (\n :id, :name, :statusFlag\n)","parse":{"outcome":"throw","value":"Scanner: Unknown opcode 58","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Scanner: Unknown opcode 58","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:support/Migrations/OrdersProductsFieldsMultCompMigration#1": {"source":"insert into co_orders_x_products_mult_comp (\n oxp_ord_id, oxp_prd_id, oxp_quantity, oxp_ord_status_flag, oxp_prd_status_flag\n) values (\n :oxpOrdId, :oxpPrdId, :oxpQuantity, :oxpOrdStatusFlag, :oxpPrdStatusFlag\n)","parse":{"outcome":"throw","value":"Scanner: Unknown opcode 58","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Scanner: Unknown opcode 58","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:support/Migrations/OrdersProductsFieldsMultMigration#1": {"source":"insert into co_orders_x_products_mult (\n oxp_id, oxp_ord_id, oxp_prd_id, oxp_quantity, oxp_ord_status_flag, oxp_prd_status_flag\n) values (\n :oxpId, :oxpOrdId, :oxpPrdId, :oxpQuantity, :oxpOrdStatusFlag, :oxpPrdStatusFlag\n)","parse":{"outcome":"throw","value":"Scanner: Unknown opcode 58","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Scanner: Unknown opcode 58","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:support/Migrations/OrdersProductsFieldsOneCompMigration#1": {"source":"insert into co_orders_x_products_one_comp (\n oxp_ord_id, oxp_prd_id, oxp_quantity\n) values (\n :oxpOrdId, :oxpPrdId, :oxpQuantity\n)","parse":{"outcome":"throw","value":"Scanner: Unknown opcode 58","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Scanner: Unknown opcode 58","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:support/Migrations/OrdersProductsFieldsOneMigration#1": {"source":"insert into co_orders_x_products_one (\n oxp_id, oxp_ord_id, oxp_prd_id, oxp_quantity\n) values (\n :oxpId, :oxpOrdId, :oxpPrdId, :oxpQuantity\n)","parse":{"outcome":"throw","value":"Scanner: Unknown opcode 58","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Scanner: Unknown opcode 58","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:support/Migrations/OrdersProductsMigration#1": {"source":"insert into co_orders_x_products (\n oxp_ord_id, oxp_prd_id, oxp_quantity\n) values (\n :oxpOrdId, :oxpPrdId, :oxpQuantity\n)","parse":{"outcome":"throw","value":"Scanner: Unknown opcode 58","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Scanner: Unknown opcode 58","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:support/Migrations/PersonasMigration#1": {"source":"insert into personas (cedula, tipo_documento_id, nombres, telefono, cupo, estado)\nvalues (:cedula, :tipoDocumentoId, :nombres, :telefono, :cupo, :estado)","parse":{"outcome":"throw","value":"Scanner: Unknown opcode 58","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Scanner: Unknown opcode 58","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:support/Migrations/ProductsMigration#1": {"source":"insert into co_products (\n prd_id, prd_name, prd_status_flag\n) values (\n :id, :name, :statusFlag\n)","parse":{"outcome":"throw","value":"Scanner: Unknown opcode 58","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Scanner: Unknown opcode 58","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:support/Migrations/SelectMigration#1": {"source":"insert into ph_select (sel_name, sel_text)\nvalues (:name, :text)","parse":{"outcome":"throw","value":"Scanner: Unknown opcode 58","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Scanner: Unknown opcode 58","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:support/Migrations/SettersMigration#1": {"source":"insert into co_setters (column1, column2, column3)\nvalues (:column1, :column2, :column3)","parse":{"outcome":"throw","value":"Scanner: Unknown opcode 58","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Scanner: Unknown opcode 58","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:support/Migrations/SongsMigration#1": {"source":"insert into songs (id, albums_id, name) values (:id, :albumsId, :name)","parse":{"outcome":"throw","value":"Scanner: Unknown opcode 58","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Scanner: Unknown opcode 58","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:support/Migrations/SourcesMigration#1": {"source":"insert into co_sources (id, username, source)\nvalues (:id, :username, :source)","parse":{"outcome":"throw","value":"Scanner: Unknown opcode 58","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Scanner: Unknown opcode 58","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:support/Migrations/StringPrimaryMigration#1": {"source":"insert into table_with_uuid_primary (uuid, int_field)\nvalues (:uuid, :intField)","parse":{"outcome":"throw","value":"Scanner: Unknown opcode 58","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Scanner: Unknown opcode 58","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:support/Migrations/StuffMigration#1": {"source":"insert into stuff (stf_id, stf_name, stf_type)\nvalues (:id, :name, :type)","parse":{"outcome":"throw","value":"Scanner: Unknown opcode 58","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Scanner: Unknown opcode 58","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:support/Page/Http#1": {"source":"DELETE","parse":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:support/Traits/QueryCounterTrait#1": {"source":"SELECT COUNT(*) \"numrows\" FROM (","parse":{"outcome":"throw","value":"Syntax error, unexpected token STRING(numrows), near to ' FROM (', when parsing: SELECT COUNT(*) \"numrows\" FROM ( (32)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:unit/Db/Dialect/LimitInjectionTest#1": {"source":"SELECT * FROM robots LIMIT 5 OFFSET 20","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"robots"}}},"limit":{"number":{"type":258,"value":"5"},"offset":{"type":258,"value":"20"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:unit/Db/Dialect/LimitInjectionTest#2": {"source":"SELECT * FROM robots LIMIT :APL0:","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"robots"}}},"limit":{"number":{"type":274,"value":"APL0"}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"robots"}}},"limit":{"number":{"type":274,"value":"APL0"}}}}}, + "cphalcon:unit/Db/Dialect/LimitInjectionTest#3": {"source":"SELECT * FROM robots LIMIT :APL0: OFFSET :APL1:","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"robots"}}},"limit":{"number":{"type":274,"value":"APL0"},"offset":{"type":274,"value":"APL1"}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"robots"}}},"limit":{"number":{"type":274,"value":"APL0"},"offset":{"type":274,"value":"APL1"}}}}}, + "cphalcon:unit/Mvc/Model/Query/Lang/ParsePHQLTest#1": {"source":"SELECT [TagMe\\Modules\\Identity\\Infrastructure\\User\\Model\\Elasticsearch\\Users].* FROM [TagMe\\Modules\\Identity\\Infrastructure\\User\\Model\\Elasticsearch\\Users] WHERE _id = 'GcbN9FIoI8IC3LqBIuCu50AC02TpI8ruKOjyzd1fqOCuna' LIMIT :APL0:","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":353,"column":"TagMe\\Modules\\Identity\\Infrastructure\\User\\Model\\Elasticsearch\\Users"}],"tables":{"qualifiedName":{"type":355,"name":"TagMe\\Modules\\Identity\\Infrastructure\\User\\Model\\Elasticsearch\\Users"}}},"where":{"type":61,"left":{"type":355,"name":"_id"},"right":{"type":260,"value":"GcbN9FIoI8IC3LqBIuCu50AC02TpI8ruKOjyzd1fqOCuna"}},"limit":{"number":{"type":274,"value":"APL0"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:unit/Mvc/Model/Query/Lang/ParsePHQLTest#2": {"source":"SELECT [TagMe\\Modules\\Identity\\Infrastructure\\User\\Model\\Elasticsearch\\Users].* FROM [TagMe\\Modules\\Identity\\Infrastructure\\User\\Model\\Elasticsearch\\Users] WHERE _id = 'GcbN9FIoI8IC3LpcIuCu50AC02TpI8ruKOjyzd1fqOCuna' LIMIT :APL0:","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":353,"column":"TagMe\\Modules\\Identity\\Infrastructure\\User\\Model\\Elasticsearch\\Users"}],"tables":{"qualifiedName":{"type":355,"name":"TagMe\\Modules\\Identity\\Infrastructure\\User\\Model\\Elasticsearch\\Users"}}},"where":{"type":61,"left":{"type":355,"name":"_id"},"right":{"type":260,"value":"GcbN9FIoI8IC3LpcIuCu50AC02TpI8ruKOjyzd1fqOCuna"}},"limit":{"number":{"type":274,"value":"APL0"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:unit/Mvc/Model/Query/Lang/ParsePHQLTest#3": {"source":"SELECT * FROM Robots WHERE name = 'B0'","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}},"where":{"type":61,"left":{"type":355,"name":"name"},"right":{"type":260,"value":"B0"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:unit/Mvc/Model/Query/Lang/ParsePHQLTest#4": {"source":"SELECT * FROM Robots WHERE name = 'AQ'","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}},"where":{"type":61,"left":{"type":355,"name":"name"},"right":{"type":260,"value":"AQ"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:unit/Mvc/Model/Query/Lang/ParsePHQLTest#5": {"source":"SELECT * FROM Robots WHERE name = 'qB'","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}},"where":{"type":61,"left":{"type":355,"name":"name"},"right":{"type":260,"value":"qB"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:unit/Mvc/Model/Query/Lang/ParsePHQLTest#6": {"source":"SELECT * FROM Robots WHERE name = 'pc'","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}},"where":{"type":61,"left":{"type":355,"name":"name"},"right":{"type":260,"value":"pc"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:unit/Mvc/Model/Query/Lang/ParsePHQLTest#7": {"source":"SELECT * FROM Robots WHERE name = 'cacheHit'","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}},"where":{"type":61,"left":{"type":355,"name":"name"},"right":{"type":260,"value":"cacheHit"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:unit/Mvc/Model/Query/Lang/ParsePHQLTest#8": {"source":"SELECT * FROM Robots WHERE name = 'a","parse":{"outcome":"throw","value":"Scanning error before 'a' when parsing: SELECT * FROM Robots WHERE name = 'a (36)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Scanning error before 'a' when parsing: SELECT * FROM Robots WHERE name = 'a (36)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:unit/Mvc/Model/Query/Lang/ParsePHQLTest#9": {"source":"SELECT * FROM Robots WHERE id IN (","parse":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:unit/Mvc/Model/Query/Lang/ParsePHQLTest#10": {"source":"SELECT * FROM Robots WHERE name = \"","parse":{"outcome":"throw","value":"Scanning error before '' when parsing: SELECT * FROM Robots WHERE name = \" (35)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Scanning error before '' when parsing: SELECT * FROM Robots WHERE name = \" (35)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:unit/Mvc/Model/Query/Lang/ParsePHQLTest#11": {"source":"SELECT * FROM Robots WHERE name = ","parse":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:unit/Mvc/Model/Query/Lang/StackOverflowTest#1": {"source":"SELECT * FROM Robots WHERE id = ","parse":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Delete/CombinationTest#1": {"source":"DELETE FROM Invoices","parse":{"outcome":"value","value":{"type":303,"delete":{"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":303,"delete":{"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}}}}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Delete/CombinationTest#2": {"source":"DELETE FROM Invoices AS i WHERE i.inv_status_flag = 0","parse":{"outcome":"value","value":{"type":303,"delete":{"tables":{"qualifiedName":{"type":355,"name":"Invoices"},"alias":"i"}},"where":{"type":61,"left":{"type":355,"domain":"i","name":"inv_status_flag"},"right":{"type":258,"value":"0"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Delete/CombinationTest#3": {"source":"DELETE FROM Invoices LIMIT 10","parse":{"outcome":"value","value":{"type":303,"delete":{"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}},"limit":{"number":{"type":258,"value":"10"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Delete/CombinationTest#4": {"source":"DELETE FROM Invoices WHERE inv_id = 1","parse":{"outcome":"value","value":{"type":303,"delete":{"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}},"where":{"type":61,"left":{"type":355,"name":"inv_id"},"right":{"type":258,"value":"1"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Delete/CombinationTest#5": {"source":"DELETE FROM Invoices WHERE inv_id = :id:","parse":{"outcome":"value","value":{"type":303,"delete":{"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}},"where":{"type":61,"left":{"type":355,"name":"inv_id"},"right":{"type":274,"value":"id"}}}},"parseNoLiterals":{"outcome":"value","value":{"type":303,"delete":{"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}},"where":{"type":61,"left":{"type":355,"name":"inv_id"},"right":{"type":274,"value":"id"}}}}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Delete/CombinationTest#6": {"source":"DELETE FROM Invoices WHERE inv_id = ?0","parse":{"outcome":"value","value":{"type":303,"delete":{"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}},"where":{"type":61,"left":{"type":355,"name":"inv_id"},"right":{"type":273,"value":"?0"}}}},"parseNoLiterals":{"outcome":"value","value":{"type":303,"delete":{"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}},"where":{"type":61,"left":{"type":355,"name":"inv_id"},"right":{"type":273,"value":"?0"}}}}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Delete/CombinationTest#7": {"source":"DELETE FROM Invoices WHERE inv_status_flag = 0","parse":{"outcome":"value","value":{"type":303,"delete":{"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}},"where":{"type":61,"left":{"type":355,"name":"inv_status_flag"},"right":{"type":258,"value":"0"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Delete/CombinationTest#8": {"source":"DELETE FROM Invoices WHERE inv_cst_id IN (1, 2, 3)","parse":{"outcome":"value","value":{"type":303,"delete":{"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}},"where":{"type":315,"left":{"type":355,"name":"inv_cst_id"},"right":[{"type":258,"value":"1"},{"type":258,"value":"2"},{"type":258,"value":"3"}]}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Delete/CombinationTest#9": {"source":"DELETE FROM Invoices WHERE inv_created_at IS NULL","parse":{"outcome":"value","value":{"type":303,"delete":{"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}},"where":{"type":365,"left":{"type":355,"name":"inv_created_at"}}}},"parseNoLiterals":{"outcome":"value","value":{"type":303,"delete":{"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}},"where":{"type":365,"left":{"type":355,"name":"inv_created_at"}}}}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Delete/CombinationTest#10": {"source":"DELETE FROM Invoices WHERE inv_total < 0 LIMIT 3","parse":{"outcome":"value","value":{"type":303,"delete":{"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}},"where":{"type":60,"left":{"type":355,"name":"inv_total"},"right":{"type":258,"value":"0"}},"limit":{"number":{"type":258,"value":"3"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Insert/CombinationTest#1": {"source":"INSERT INTO Invoices (inv_cst_id, inv_status_flag, inv_title, inv_total, inv_created_at) VALUES (1, 0, 'Test Invoice', 150.50, '2025-01-01 00:00:00')","parse":{"outcome":"value","value":{"type":306,"qualifiedName":{"type":355,"name":"Invoices"},"fields":[{"type":355,"name":"inv_cst_id"},{"type":355,"name":"inv_status_flag"},{"type":355,"name":"inv_title"},{"type":355,"name":"inv_total"},{"type":355,"name":"inv_created_at"}],"values":[{"type":258,"value":"1"},{"type":258,"value":"0"},{"type":260,"value":"Test Invoice"},{"type":259,"value":"150.50"},{"type":260,"value":"2025-01-01 00:00:00"}]}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Insert/CombinationTest#2": {"source":"INSERT INTO Invoices VALUES (1, 1, 1, 'Test Invoice', 100.00, '2025-01-01 00:00:00')","parse":{"outcome":"value","value":{"type":306,"qualifiedName":{"type":355,"name":"Invoices"},"values":[{"type":258,"value":"1"},{"type":258,"value":"1"},{"type":258,"value":"1"},{"type":260,"value":"Test Invoice"},{"type":259,"value":"100.00"},{"type":260,"value":"2025-01-01 00:00:00"}]}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Insert/CombinationTest#3": {"source":"INSERT INTO Invoices (inv_total) VALUES (100 + 50)","parse":{"outcome":"value","value":{"type":306,"qualifiedName":{"type":355,"name":"Invoices"},"fields":[{"type":355,"name":"inv_total"}],"values":[{"type":43,"left":{"type":258,"value":"100"},"right":{"type":258,"value":"50"}}]}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Insert/CombinationTest#4": {"source":"INSERT INTO Invoices (inv_title, inv_total) VALUES ('Null Test', NULL)","parse":{"outcome":"value","value":{"type":306,"qualifiedName":{"type":355,"name":"Invoices"},"fields":[{"type":355,"name":"inv_title"},{"type":355,"name":"inv_total"}],"values":[{"type":260,"value":"Null Test"},{"type":322}]}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Insert/CombinationTest#5": {"source":"INSERT INTO Invoices (inv_title, inv_total) VALUES ('Invoice A', 200.00)","parse":{"outcome":"value","value":{"type":306,"qualifiedName":{"type":355,"name":"Invoices"},"fields":[{"type":355,"name":"inv_title"},{"type":355,"name":"inv_total"}],"values":[{"type":260,"value":"Invoice A"},{"type":259,"value":"200.00"}]}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Insert/CombinationTest#6": {"source":"INSERT INTO Invoices (inv_cst_id, inv_status_flag, inv_title, inv_total) VALUES (:cstId:, :status:, :title:, :total:)","parse":{"outcome":"value","value":{"type":306,"qualifiedName":{"type":355,"name":"Invoices"},"fields":[{"type":355,"name":"inv_cst_id"},{"type":355,"name":"inv_status_flag"},{"type":355,"name":"inv_title"},{"type":355,"name":"inv_total"}],"values":[{"type":274,"value":"cstId"},{"type":274,"value":"status"},{"type":274,"value":"title"},{"type":274,"value":"total"}]}},"parseNoLiterals":{"outcome":"value","value":{"type":306,"qualifiedName":{"type":355,"name":"Invoices"},"fields":[{"type":355,"name":"inv_cst_id"},{"type":355,"name":"inv_status_flag"},{"type":355,"name":"inv_title"},{"type":355,"name":"inv_total"}],"values":[{"type":274,"value":"cstId"},{"type":274,"value":"status"},{"type":274,"value":"title"},{"type":274,"value":"total"}]}}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Insert/CombinationTest#7": {"source":"INSERT INTO Invoices (inv_id, inv_cst_id, inv_status_flag, inv_title, inv_total) VALUES ({id}, {cstId}, {status}, {title}, {total})","parse":{"outcome":"value","value":{"type":306,"qualifiedName":{"type":355,"name":"Invoices"},"fields":[{"type":355,"name":"inv_id"},{"type":355,"name":"inv_cst_id"},{"type":355,"name":"inv_status_flag"},{"type":355,"name":"inv_title"},{"type":355,"name":"inv_total"}],"values":[{"type":277,"value":"id"},{"type":277,"value":"cstId"},{"type":277,"value":"status"},{"type":277,"value":"title"},{"type":277,"value":"total"}]}},"parseNoLiterals":{"outcome":"value","value":{"type":306,"qualifiedName":{"type":355,"name":"Invoices"},"fields":[{"type":355,"name":"inv_id"},{"type":355,"name":"inv_cst_id"},{"type":355,"name":"inv_status_flag"},{"type":355,"name":"inv_title"},{"type":355,"name":"inv_total"}],"values":[{"type":277,"value":"id"},{"type":277,"value":"cstId"},{"type":277,"value":"status"},{"type":277,"value":"title"},{"type":277,"value":"total"}]}}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Insert/CombinationTest#8": {"source":"INSERT INTO Invoices (inv_cst_id, inv_title, inv_total) VALUES (?0, ?1, ?2)","parse":{"outcome":"value","value":{"type":306,"qualifiedName":{"type":355,"name":"Invoices"},"fields":[{"type":355,"name":"inv_cst_id"},{"type":355,"name":"inv_title"},{"type":355,"name":"inv_total"}],"values":[{"type":273,"value":"?0"},{"type":273,"value":"?1"},{"type":273,"value":"?2"}]}},"parseNoLiterals":{"outcome":"value","value":{"type":306,"qualifiedName":{"type":355,"name":"Invoices"},"fields":[{"type":355,"name":"inv_cst_id"},{"type":355,"name":"inv_title"},{"type":355,"name":"inv_total"}],"values":[{"type":273,"value":"?0"},{"type":273,"value":"?1"},{"type":273,"value":"?2"}]}}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Insert/CombinationTest#9": {"source":"INSERT INTO Invoices (inv_title, inv_status_flag) VALUES ('New Invoice', TRUE)","parse":{"outcome":"value","value":{"type":306,"qualifiedName":{"type":355,"name":"Invoices"},"fields":[{"type":355,"name":"inv_title"},{"type":355,"name":"inv_status_flag"}],"values":[{"type":260,"value":"New Invoice"},{"type":334}]}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Insert/CombinationTest#10": {"source":"INSERT INTO Invoices (inv_title, inv_total) VALUES (UPPER('test invoice'), 100.00)","parse":{"outcome":"value","value":{"type":306,"qualifiedName":{"type":355,"name":"Invoices"},"fields":[{"type":355,"name":"inv_title"},{"type":355,"name":"inv_total"}],"values":[{"type":350,"name":"UPPER","arguments":[{"type":260,"value":"test invoice"}]},{"type":259,"value":"100.00"}]}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/AggregateTest#1": {"source":"SELECT AVG(inv_total) FROM Invoices","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":350,"name":"AVG","arguments":[{"type":355,"name":"inv_total"}]}}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":350,"name":"AVG","arguments":[{"type":355,"name":"inv_total"}]}}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}}}}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/AggregateTest#2": {"source":"SELECT COUNT(*) FROM Invoices","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":350,"name":"COUNT","arguments":[{"type":352}]}}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":350,"name":"COUNT","arguments":[{"type":352}]}}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}}}}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/AggregateTest#3": {"source":"SELECT COUNT(DISTINCT inv_cst_id) FROM Invoices","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":350,"name":"COUNT","arguments":[{"type":355,"name":"inv_cst_id"}],"distinct":true}}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":350,"name":"COUNT","arguments":[{"type":355,"name":"inv_cst_id"}],"distinct":true}}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}}}}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/AggregateTest#4": {"source":"SELECT COUNT(inv_id) FROM Invoices","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":350,"name":"COUNT","arguments":[{"type":355,"name":"inv_id"}]}}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":350,"name":"COUNT","arguments":[{"type":355,"name":"inv_id"}]}}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}}}}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/AggregateTest#5": {"source":"SELECT COUNT(*), SUM(inv_total), AVG(inv_total), MIN(inv_total), MAX(inv_total) FROM Invoices","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":350,"name":"COUNT","arguments":[{"type":352}]}},{"type":354,"column":{"type":350,"name":"SUM","arguments":[{"type":355,"name":"inv_total"}]}},{"type":354,"column":{"type":350,"name":"AVG","arguments":[{"type":355,"name":"inv_total"}]}},{"type":354,"column":{"type":350,"name":"MIN","arguments":[{"type":355,"name":"inv_total"}]}},{"type":354,"column":{"type":350,"name":"MAX","arguments":[{"type":355,"name":"inv_total"}]}}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":350,"name":"COUNT","arguments":[{"type":352}]}},{"type":354,"column":{"type":350,"name":"SUM","arguments":[{"type":355,"name":"inv_total"}]}},{"type":354,"column":{"type":350,"name":"AVG","arguments":[{"type":355,"name":"inv_total"}]}},{"type":354,"column":{"type":350,"name":"MIN","arguments":[{"type":355,"name":"inv_total"}]}},{"type":354,"column":{"type":350,"name":"MAX","arguments":[{"type":355,"name":"inv_total"}]}}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}}}}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/AggregateTest#6": {"source":"SELECT MAX(inv_created_at) FROM Invoices","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":350,"name":"MAX","arguments":[{"type":355,"name":"inv_created_at"}]}}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":350,"name":"MAX","arguments":[{"type":355,"name":"inv_created_at"}]}}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}}}}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/AggregateTest#7": {"source":"SELECT MAX(inv_total) FROM Invoices","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":350,"name":"MAX","arguments":[{"type":355,"name":"inv_total"}]}}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":350,"name":"MAX","arguments":[{"type":355,"name":"inv_total"}]}}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}}}}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/AggregateTest#8": {"source":"SELECT MIN(inv_created_at) FROM Invoices","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":350,"name":"MIN","arguments":[{"type":355,"name":"inv_created_at"}]}}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":350,"name":"MIN","arguments":[{"type":355,"name":"inv_created_at"}]}}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}}}}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/AggregateTest#9": {"source":"SELECT MIN(inv_total) FROM Invoices","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":350,"name":"MIN","arguments":[{"type":355,"name":"inv_total"}]}}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":350,"name":"MIN","arguments":[{"type":355,"name":"inv_total"}]}}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}}}}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/AggregateTest#10": {"source":"SELECT SUM(inv_total) FROM Invoices","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":350,"name":"SUM","arguments":[{"type":355,"name":"inv_total"}]}}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":350,"name":"SUM","arguments":[{"type":355,"name":"inv_total"}]}}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}}}}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/BasicTest#1": {"source":"SELECT * FROM Invoices","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}}}}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/BasicTest#2": {"source":"SELECT i.* FROM Invoices i","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":353,"column":"i"}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"},"alias":"i"}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":353,"column":"i"}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"},"alias":"i"}}}}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/BasicTest#3": {"source":"SELECT Invoices.* FROM Invoices","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":353,"column":"Invoices"}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":353,"column":"Invoices"}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}}}}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/BasicTest#4": {"source":"SELECT inv_id, inv_title, inv_total FROM Invoices","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"inv_id"}},{"type":354,"column":{"type":355,"name":"inv_title"}},{"type":354,"column":{"type":355,"name":"inv_total"}}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"inv_id"}},{"type":354,"column":{"type":355,"name":"inv_title"}},{"type":354,"column":{"type":355,"name":"inv_total"}}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}}}}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/BasicTest#5": {"source":"SELECT inv_id FROM Invoices","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"inv_id"}}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"inv_id"}}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}}}}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/BasicTest#6": {"source":"SELECT i.inv_id FROM Invoices i","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"domain":"i","name":"inv_id"}}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"},"alias":"i"}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"domain":"i","name":"inv_id"}}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"},"alias":"i"}}}}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/BasicTest#7": {"source":"SELECT i.inv_id FROM Invoices AS i","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"domain":"i","name":"inv_id"}}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"},"alias":"i"}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"domain":"i","name":"inv_id"}}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"},"alias":"i"}}}}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/BasicTest#8": {"source":"SELECT Invoices.inv_id FROM Invoices","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"domain":"Invoices","name":"inv_id"}}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"domain":"Invoices","name":"inv_id"}}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}}}}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/BasicTest#9": {"source":"SELECT inv_id, inv_title FROM Invoices","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"inv_id"}},{"type":354,"column":{"type":355,"name":"inv_title"}}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"inv_id"}},{"type":354,"column":{"type":355,"name":"inv_title"}}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}}}}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/BetweenTest#1": {"source":"SELECT * FROM Invoices WHERE inv_total BETWEEN 10.00 AND 500.00","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}},"where":{"type":331,"left":{"type":355,"name":"inv_total"},"right":{"type":266,"left":{"type":259,"value":"10.00"},"right":{"type":259,"value":"500.00"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/BetweenTest#2": {"source":"SELECT * FROM Invoices WHERE inv_id BETWEEN 1 AND 100","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}},"where":{"type":331,"left":{"type":355,"name":"inv_id"},"right":{"type":266,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"100"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/BetweenTest#3": {"source":"SELECT * FROM Invoices WHERE inv_total NOT BETWEEN 10.00 AND 500.00","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}},"where":{"type":332,"left":{"type":355,"name":"inv_total"},"right":{"type":266,"left":{"type":259,"value":"10.00"},"right":{"type":259,"value":"500.00"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/BetweenTest#4": {"source":"SELECT * FROM Invoices WHERE inv_id NOT BETWEEN 1 AND 100","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}},"where":{"type":332,"left":{"type":355,"name":"inv_id"},"right":{"type":266,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"100"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/BitwiseTest#1": {"source":"SELECT * FROM Invoices WHERE inv_status_flag & 1 = 1","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}},"where":{"type":61,"left":{"type":38,"left":{"type":355,"name":"inv_status_flag"},"right":{"type":258,"value":"1"}},"right":{"type":258,"value":"1"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/BitwiseTest#2": {"source":"SELECT inv_status_flag & 3 AS masked FROM Invoices","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":38,"left":{"type":355,"name":"inv_status_flag"},"right":{"type":258,"value":"3"}},"alias":"masked"}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/BitwiseTest#3": {"source":"SELECT ~inv_status_flag FROM Invoices","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":126,"right":{"type":355,"name":"inv_status_flag"}}}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":126,"right":{"type":355,"name":"inv_status_flag"}}}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}}}}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/BitwiseTest#4": {"source":"SELECT * FROM Invoices WHERE inv_status_flag | 2 = 3","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}},"where":{"type":61,"left":{"type":124,"left":{"type":355,"name":"inv_status_flag"},"right":{"type":258,"value":"2"}},"right":{"type":258,"value":"3"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/BitwiseTest#5": {"source":"SELECT * FROM Invoices WHERE inv_status_flag ^ 1 = 0","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}},"where":{"type":61,"left":{"type":94,"left":{"type":355,"name":"inv_status_flag"},"right":{"type":258,"value":"1"}},"right":{"type":258,"value":"0"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/BracketsNameTest#1": {"source":"SELECT [inv_id], [inv_title] FROM [Invoices]","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"inv_id"}},{"type":354,"column":{"type":355,"name":"inv_title"}}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"inv_id"}},{"type":354,"column":{"type":355,"name":"inv_title"}}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}}}}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/BracketsNameTest#2": {"source":"SELECT [inv_id] FROM Invoices WHERE [inv_status_flag] = 1","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"inv_id"}}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}},"where":{"type":61,"left":{"type":355,"name":"inv_status_flag"},"right":{"type":258,"value":"1"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/BracketsWithEscapedNameTest#1": {"source":"SELECT [col\\[0\\]], [col\\[1\\]] FROM Items","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"col\\[0\\]"}},{"type":354,"column":{"type":355,"name":"col\\[1\\]"}}],"tables":{"qualifiedName":{"type":355,"name":"Items"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"col\\[0\\]"}},{"type":354,"column":{"type":355,"name":"col\\[1\\]"}}],"tables":{"qualifiedName":{"type":355,"name":"Items"}}}}}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/BracketsWithSpaceNameTest#1": {"source":"SELECT [First Name], [Last Name] FROM Contacts","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"First Name"}},{"type":354,"column":{"type":355,"name":"Last Name"}}],"tables":{"qualifiedName":{"type":355,"name":"Contacts"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"First Name"}},{"type":354,"column":{"type":355,"name":"Last Name"}}],"tables":{"qualifiedName":{"type":355,"name":"Contacts"}}}}}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/BracketsWithSpaceNameTest#2": {"source":"SELECT c.[First Name], c.[Last Name] FROM Contacts AS c","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"domain":"c","name":"First Name"}},{"type":354,"column":{"type":355,"domain":"c","name":"Last Name"}}],"tables":{"qualifiedName":{"type":355,"name":"Contacts"},"alias":"c"}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"domain":"c","name":"First Name"}},{"type":354,"column":{"type":355,"domain":"c","name":"Last Name"}}],"tables":{"qualifiedName":{"type":355,"name":"Contacts"},"alias":"c"}}}}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/BracketsWithSpaceNameTest#3": {"source":"SELECT c.[First Name] FROM Contacts AS c WHERE c.[Last Name] = 'Smith'","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"domain":"c","name":"First Name"}}],"tables":{"qualifiedName":{"type":355,"name":"Contacts"},"alias":"c"}},"where":{"type":61,"left":{"type":355,"domain":"c","name":"Last Name"},"right":{"type":260,"value":"Smith"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/BracketsWithSpaceNameTest#4": {"source":"SELECT [First Name] AS firstName, [Last Name] AS lastName FROM Contacts ORDER BY [Last Name] ASC","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"First Name"},"alias":"firstName"},{"type":354,"column":{"type":355,"name":"Last Name"},"alias":"lastName"}],"tables":{"qualifiedName":{"type":355,"name":"Contacts"}}},"orderBy":{"column":{"type":355,"name":"Last Name"},"sort":327}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"First Name"},"alias":"firstName"},{"type":354,"column":{"type":355,"name":"Last Name"},"alias":"lastName"}],"tables":{"qualifiedName":{"type":355,"name":"Contacts"}}},"orderBy":{"column":{"type":355,"name":"Last Name"},"sort":327}}}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/BracketsWithSpaceNameTest#5": {"source":"SELECT * FROM [My Table]","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"My Table"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"My Table"}}}}}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/CaseTest#1": {"source":"SELECT CASE inv_status_flag WHEN 0 THEN 'pending' WHEN 1 THEN 'paid' ELSE 'unknown' END FROM Invoices","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":409,"left":{"type":355,"name":"inv_status_flag"},"right":[{"type":410,"left":{"type":258,"value":"0"},"right":{"type":260,"value":"pending"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":260,"value":"paid"}},{"type":411,"left":{"type":260,"value":"unknown"}}]}}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/CaseTest#2": {"source":"SELECT CASE inv_status_flag WHEN 0 THEN 'pending' WHEN 1 THEN 'paid' ELSE 'unknown' END AS status FROM Invoices","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":409,"left":{"type":355,"name":"inv_status_flag"},"right":[{"type":410,"left":{"type":258,"value":"0"},"right":{"type":260,"value":"pending"}},{"type":410,"left":{"type":258,"value":"1"},"right":{"type":260,"value":"paid"}},{"type":411,"left":{"type":260,"value":"unknown"}}]},"alias":"status"}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/CaseTest#3": {"source":"SELECT * FROM Invoices WHERE CASE inv_status_flag WHEN 1 THEN 1 ELSE 0 END = 1","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}},"where":{"type":61,"left":{"type":409,"left":{"type":355,"name":"inv_status_flag"},"right":[{"type":410,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"1"}},{"type":411,"left":{"type":258,"value":"0"}}]},"right":{"type":258,"value":"1"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/CastConvertTest#1": {"source":"SELECT CAST(inv_total AS INTEGER) FROM Invoices","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":333,"left":{"type":355,"name":"inv_total"},"right":{"type":358,"name":"INTEGER"}}}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":333,"left":{"type":355,"name":"inv_total"},"right":{"type":358,"name":"INTEGER"}}}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}}}}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/CastConvertTest#2": {"source":"SELECT CAST(inv_id AS VARCHAR) FROM Invoices","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":333,"left":{"type":355,"name":"inv_id"},"right":{"type":358,"name":"VARCHAR"}}}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":333,"left":{"type":355,"name":"inv_id"},"right":{"type":358,"name":"VARCHAR"}}}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}}}}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/CastConvertTest#3": {"source":"SELECT CONVERT(inv_title USING utf8) FROM Invoices","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":336,"left":{"type":355,"name":"inv_title"},"right":{"type":358,"name":"utf8"}}}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":336,"left":{"type":355,"name":"inv_title"},"right":{"type":358,"name":"utf8"}}}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}}}}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/ColumnAliasesTest#1": {"source":"SELECT inv_id AS id FROM Invoices","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"inv_id"},"alias":"id"}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"inv_id"},"alias":"id"}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}}}}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/ColumnAliasesTest#2": {"source":"SELECT inv_title AS title, inv_total AS total FROM Invoices","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"inv_title"},"alias":"title"},{"type":354,"column":{"type":355,"name":"inv_total"},"alias":"total"}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"inv_title"},"alias":"title"},{"type":354,"column":{"type":355,"name":"inv_total"},"alias":"total"}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}}}}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/ColumnAliasesTest#3": {"source":"SELECT i.inv_id AS id, i.inv_title title FROM Invoices AS i","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"domain":"i","name":"inv_id"},"alias":"id"},{"type":354,"column":{"type":355,"domain":"i","name":"inv_title"},"alias":"title"}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"},"alias":"i"}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"domain":"i","name":"inv_id"},"alias":"id"},{"type":354,"column":{"type":355,"domain":"i","name":"inv_title"},"alias":"title"}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"},"alias":"i"}}}}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/ComplexTest#1": {"source":"SELECT * FROM Invoices WHERE inv_cst_id = :cstId: AND inv_status_flag IN (0, 1) AND inv_total BETWEEN :min: AND :max: ORDER BY inv_created_at DESC LIMIT :limit: OFFSET :offset:","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}},"where":{"type":331,"left":{"type":61,"left":{"type":355,"name":"inv_cst_id"},"right":{"type":266,"left":{"type":266,"left":{"type":274,"value":"cstId"},"right":{"type":315,"left":{"type":355,"name":"inv_status_flag"},"right":[{"type":258,"value":"0"},{"type":258,"value":"1"}]}},"right":{"type":355,"name":"inv_total"}}},"right":{"type":266,"left":{"type":274,"value":"min"},"right":{"type":274,"value":"max"}}},"orderBy":{"column":{"type":355,"name":"inv_created_at"},"sort":328},"limit":{"number":{"type":274,"value":"limit"},"offset":{"type":274,"value":"offset"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/ComplexTest#2": {"source":"SELECT COUNT(*) AS cnt, inv_status_flag FROM Invoices WHERE inv_created_at IS NOT NULL GROUP BY inv_status_flag ORDER BY cnt DESC","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":350,"name":"COUNT","arguments":[{"type":352}]},"alias":"cnt"},{"type":354,"column":{"type":355,"name":"inv_status_flag"}}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}},"where":{"type":366,"left":{"type":355,"name":"inv_created_at"}},"orderBy":{"column":{"type":355,"name":"cnt"},"sort":328},"groupBy":{"type":355,"name":"inv_status_flag"}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":350,"name":"COUNT","arguments":[{"type":352}]},"alias":"cnt"},{"type":354,"column":{"type":355,"name":"inv_status_flag"}}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}},"where":{"type":366,"left":{"type":355,"name":"inv_created_at"}},"orderBy":{"column":{"type":355,"name":"cnt"},"sort":328},"groupBy":{"type":355,"name":"inv_status_flag"}}}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/ComplexTest#3": {"source":"SELECT i.inv_id, i.inv_title, SUM(i.inv_total) AS total FROM Invoices AS i WHERE i.inv_status_flag = 1 GROUP BY i.inv_cst_id HAVING SUM(i.inv_total) > 500 ORDER BY total DESC LIMIT 10","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"domain":"i","name":"inv_id"}},{"type":354,"column":{"type":355,"domain":"i","name":"inv_title"}},{"type":354,"column":{"type":350,"name":"SUM","arguments":[{"type":355,"domain":"i","name":"inv_total"}]},"alias":"total"}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"},"alias":"i"}},"where":{"type":61,"left":{"type":355,"domain":"i","name":"inv_status_flag"},"right":{"type":258,"value":"1"}},"orderBy":{"column":{"type":355,"name":"total"},"sort":328},"groupBy":{"type":355,"domain":"i","name":"inv_cst_id"},"having":{"type":62,"left":{"type":350,"name":"SUM","arguments":[{"type":355,"domain":"i","name":"inv_total"}]},"right":{"type":258,"value":"500"}},"limit":{"number":{"type":258,"value":"10"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/DistinctTest#1": {"source":"SELECT ALL inv_status_flag FROM Invoices","parse":{"outcome":"value","value":{"type":309,"select":{"distinct":0,"columns":[{"type":354,"column":{"type":355,"name":"inv_status_flag"}}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"distinct":0,"columns":[{"type":354,"column":{"type":355,"name":"inv_status_flag"}}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}}}}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/DistinctTest#2": {"source":"SELECT DISTINCT inv_status_flag FROM Invoices","parse":{"outcome":"value","value":{"type":309,"select":{"distinct":1,"columns":[{"type":354,"column":{"type":355,"name":"inv_status_flag"}}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"distinct":1,"columns":[{"type":354,"column":{"type":355,"name":"inv_status_flag"}}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}}}}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/DistinctTest#3": {"source":"SELECT DISTINCT inv_cst_id, inv_status_flag FROM Invoices","parse":{"outcome":"value","value":{"type":309,"select":{"distinct":1,"columns":[{"type":354,"column":{"type":355,"name":"inv_cst_id"}},{"type":354,"column":{"type":355,"name":"inv_status_flag"}}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"distinct":1,"columns":[{"type":354,"column":{"type":355,"name":"inv_cst_id"}},{"type":354,"column":{"type":355,"name":"inv_status_flag"}}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}}}}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/ForUpdateTest#1": {"source":"SELECT * FROM Invoices FOR UPDATE","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}},"forUpdate":true}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}},"forUpdate":true}}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/ForUpdateTest#2": {"source":"SELECT * FROM Invoices WHERE inv_id = 1 FOR UPDATE","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}},"where":{"type":61,"left":{"type":355,"name":"inv_id"},"right":{"type":258,"value":"1"}},"forUpdate":true}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/FromTest#1": {"source":"SELECT i.inv_id, c.name FROM Invoices AS i, Customers AS c WHERE i.inv_cst_id = c.id","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"domain":"i","name":"inv_id"}},{"type":354,"column":{"type":355,"domain":"c","name":"name"}}],"tables":[{"qualifiedName":{"type":355,"name":"Invoices"},"alias":"i"},{"qualifiedName":{"type":355,"name":"Customers"},"alias":"c"}]},"where":{"type":61,"left":{"type":355,"domain":"i","name":"inv_cst_id"},"right":{"type":355,"domain":"c","name":"id"}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"domain":"i","name":"inv_id"}},{"type":354,"column":{"type":355,"domain":"c","name":"name"}}],"tables":[{"qualifiedName":{"type":355,"name":"Invoices"},"alias":"i"},{"qualifiedName":{"type":355,"name":"Customers"},"alias":"c"}]},"where":{"type":61,"left":{"type":355,"domain":"i","name":"inv_cst_id"},"right":{"type":355,"domain":"c","name":"id"}}}}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/FromTest#2": {"source":"SELECT * FROM Invoices, Customers","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":[{"qualifiedName":{"type":355,"name":"Invoices"}},{"qualifiedName":{"type":355,"name":"Customers"}}]}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":[{"qualifiedName":{"type":355,"name":"Invoices"}},{"qualifiedName":{"type":355,"name":"Customers"}}]}}}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/FromTest#3": {"source":"SELECT * FROM Invoices, Customers WHERE Invoices.inv_cst_id = Customers.id","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":[{"qualifiedName":{"type":355,"name":"Invoices"}},{"qualifiedName":{"type":355,"name":"Customers"}}]},"where":{"type":61,"left":{"type":355,"domain":"Invoices","name":"inv_cst_id"},"right":{"type":355,"domain":"Customers","name":"id"}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":[{"qualifiedName":{"type":355,"name":"Invoices"}},{"qualifiedName":{"type":355,"name":"Customers"}}]},"where":{"type":61,"left":{"type":355,"domain":"Invoices","name":"inv_cst_id"},"right":{"type":355,"domain":"Customers","name":"id"}}}}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/GroupByTest#1": {"source":"SELECT inv_status_flag, COUNT(*) FROM Invoices GROUP BY inv_status_flag","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"inv_status_flag"}},{"type":354,"column":{"type":350,"name":"COUNT","arguments":[{"type":352}]}}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}},"groupBy":{"type":355,"name":"inv_status_flag"}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"inv_status_flag"}},{"type":354,"column":{"type":350,"name":"COUNT","arguments":[{"type":352}]}}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}},"groupBy":{"type":355,"name":"inv_status_flag"}}}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/GroupByTest#2": {"source":"SELECT inv_cst_id, inv_status_flag, COUNT(*) FROM Invoices GROUP BY inv_cst_id, inv_status_flag","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"inv_cst_id"}},{"type":354,"column":{"type":355,"name":"inv_status_flag"}},{"type":354,"column":{"type":350,"name":"COUNT","arguments":[{"type":352}]}}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}},"groupBy":[{"type":355,"name":"inv_cst_id"},{"type":355,"name":"inv_status_flag"}]}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"inv_cst_id"}},{"type":354,"column":{"type":355,"name":"inv_status_flag"}},{"type":354,"column":{"type":350,"name":"COUNT","arguments":[{"type":352}]}}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}},"groupBy":[{"type":355,"name":"inv_cst_id"},{"type":355,"name":"inv_status_flag"}]}}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/GroupByTest#3": {"source":"SELECT inv_cst_id, SUM(inv_total) FROM Invoices GROUP BY inv_cst_id","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"inv_cst_id"}},{"type":354,"column":{"type":350,"name":"SUM","arguments":[{"type":355,"name":"inv_total"}]}}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}},"groupBy":{"type":355,"name":"inv_cst_id"}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"inv_cst_id"}},{"type":354,"column":{"type":350,"name":"SUM","arguments":[{"type":355,"name":"inv_total"}]}}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}},"groupBy":{"type":355,"name":"inv_cst_id"}}}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/HasManyToManyThroughAstTest#1": {"source":"SELECT [Phalcon\\Tests\\Support\\Models\\Products].* FROM [Phalcon\\Tests\\Support\\Models\\Products] INNER JOIN [Phalcon\\Tests\\Support\\Models\\OrdersProductsFieldsOne] ON [Phalcon\\Tests\\Support\\Models\\OrdersProductsFieldsOne].[oxp_prd_id] = [Phalcon\\Tests\\Support\\Models\\Products].[prd_id] WHERE [Phalcon\\Tests\\Support\\Models\\OrdersProductsFieldsOne].[oxp_ord_id] = :APR0:","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":353,"column":"Phalcon\\Tests\\Support\\Models\\Products"}],"tables":{"qualifiedName":{"type":355,"name":"Phalcon\\Tests\\Support\\Models\\Products"}},"joins":{"type":360,"qualified":{"type":355,"name":"Phalcon\\Tests\\Support\\Models\\OrdersProductsFieldsOne"},"conditions":{"type":61,"left":{"type":355,"domain":"Phalcon\\Tests\\Support\\Models\\OrdersProductsFieldsOne","name":"oxp_prd_id"},"right":{"type":355,"domain":"Phalcon\\Tests\\Support\\Models\\Products","name":"prd_id"}}}},"where":{"type":61,"left":{"type":355,"domain":"Phalcon\\Tests\\Support\\Models\\OrdersProductsFieldsOne","name":"oxp_ord_id"},"right":{"type":274,"value":"APR0"}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":353,"column":"Phalcon\\Tests\\Support\\Models\\Products"}],"tables":{"qualifiedName":{"type":355,"name":"Phalcon\\Tests\\Support\\Models\\Products"}},"joins":{"type":360,"qualified":{"type":355,"name":"Phalcon\\Tests\\Support\\Models\\OrdersProductsFieldsOne"},"conditions":{"type":61,"left":{"type":355,"domain":"Phalcon\\Tests\\Support\\Models\\OrdersProductsFieldsOne","name":"oxp_prd_id"},"right":{"type":355,"domain":"Phalcon\\Tests\\Support\\Models\\Products","name":"prd_id"}}}},"where":{"type":61,"left":{"type":355,"domain":"Phalcon\\Tests\\Support\\Models\\OrdersProductsFieldsOne","name":"oxp_ord_id"},"right":{"type":274,"value":"APR0"}}}}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/HavingTest#1": {"source":"SELECT inv_status_flag, COUNT(*) AS cnt FROM Invoices GROUP BY inv_status_flag HAVING COUNT(*) > 5","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"inv_status_flag"}},{"type":354,"column":{"type":350,"name":"COUNT","arguments":[{"type":352}]},"alias":"cnt"}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}},"groupBy":{"type":355,"name":"inv_status_flag"},"having":{"type":62,"left":{"type":350,"name":"COUNT","arguments":[{"type":352}]},"right":{"type":258,"value":"5"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/HavingTest#2": {"source":"SELECT inv_cst_id, COUNT(*) AS cnt FROM Invoices GROUP BY inv_cst_id HAVING cnt > 10","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"inv_cst_id"}},{"type":354,"column":{"type":350,"name":"COUNT","arguments":[{"type":352}]},"alias":"cnt"}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}},"groupBy":{"type":355,"name":"inv_cst_id"},"having":{"type":62,"left":{"type":355,"name":"cnt"},"right":{"type":258,"value":"10"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/HavingTest#3": {"source":"SELECT inv_cst_id, SUM(inv_total) AS total FROM Invoices GROUP BY inv_cst_id HAVING SUM(inv_total) > 1000","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"inv_cst_id"}},{"type":354,"column":{"type":350,"name":"SUM","arguments":[{"type":355,"name":"inv_total"}]},"alias":"total"}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}},"groupBy":{"type":355,"name":"inv_cst_id"},"having":{"type":62,"left":{"type":350,"name":"SUM","arguments":[{"type":355,"name":"inv_total"}]},"right":{"type":258,"value":"1000"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/JoinTest#1": {"source":"SELECT i.inv_id, c.name FROM Invoices AS i CROSS JOIN Customers AS c","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"domain":"i","name":"inv_id"}},{"type":354,"column":{"type":355,"domain":"c","name":"name"}}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"},"alias":"i"},"joins":{"type":363,"qualified":{"type":355,"name":"Customers"},"alias":{"type":355,"name":"c"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"domain":"i","name":"inv_id"}},{"type":354,"column":{"type":355,"domain":"c","name":"name"}}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"},"alias":"i"},"joins":{"type":363,"qualified":{"type":355,"name":"Customers"},"alias":{"type":355,"name":"c"}}}}}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/JoinTest#2": {"source":"SELECT i.inv_id, c.name FROM Invoices AS i FULL JOIN Customers AS c ON i.inv_cst_id = c.id","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"domain":"i","name":"inv_id"}},{"type":354,"column":{"type":355,"domain":"c","name":"name"}}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"},"alias":"i"},"joins":{"type":364,"qualified":{"type":355,"name":"Customers"},"alias":{"type":355,"name":"c"},"conditions":{"type":61,"left":{"type":355,"domain":"i","name":"inv_cst_id"},"right":{"type":355,"domain":"c","name":"id"}}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"domain":"i","name":"inv_id"}},{"type":354,"column":{"type":355,"domain":"c","name":"name"}}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"},"alias":"i"},"joins":{"type":364,"qualified":{"type":355,"name":"Customers"},"alias":{"type":355,"name":"c"},"conditions":{"type":61,"left":{"type":355,"domain":"i","name":"inv_cst_id"},"right":{"type":355,"domain":"c","name":"id"}}}}}}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/JoinTest#3": {"source":"SELECT i.inv_id, c.name FROM Invoices AS i FULL OUTER JOIN Customers AS c ON i.inv_cst_id = c.id","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"domain":"i","name":"inv_id"}},{"type":354,"column":{"type":355,"domain":"c","name":"name"}}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"},"alias":"i"},"joins":{"type":364,"qualified":{"type":355,"name":"Customers"},"alias":{"type":355,"name":"c"},"conditions":{"type":61,"left":{"type":355,"domain":"i","name":"inv_cst_id"},"right":{"type":355,"domain":"c","name":"id"}}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"domain":"i","name":"inv_id"}},{"type":354,"column":{"type":355,"domain":"c","name":"name"}}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"},"alias":"i"},"joins":{"type":364,"qualified":{"type":355,"name":"Customers"},"alias":{"type":355,"name":"c"},"conditions":{"type":61,"left":{"type":355,"domain":"i","name":"inv_cst_id"},"right":{"type":355,"domain":"c","name":"id"}}}}}}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/JoinTest#4": {"source":"SELECT i.inv_id, c.name FROM Invoices AS i INNER JOIN Customers AS c ON i.inv_cst_id = c.id","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"domain":"i","name":"inv_id"}},{"type":354,"column":{"type":355,"domain":"c","name":"name"}}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"},"alias":"i"},"joins":{"type":360,"qualified":{"type":355,"name":"Customers"},"alias":{"type":355,"name":"c"},"conditions":{"type":61,"left":{"type":355,"domain":"i","name":"inv_cst_id"},"right":{"type":355,"domain":"c","name":"id"}}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"domain":"i","name":"inv_id"}},{"type":354,"column":{"type":355,"domain":"c","name":"name"}}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"},"alias":"i"},"joins":{"type":360,"qualified":{"type":355,"name":"Customers"},"alias":{"type":355,"name":"c"},"conditions":{"type":61,"left":{"type":355,"domain":"i","name":"inv_cst_id"},"right":{"type":355,"domain":"c","name":"id"}}}}}}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/JoinTest#5": {"source":"SELECT i.inv_id, c.name FROM Invoices AS i INNER JOIN Customers AS c ON (i.inv_cst_id = c.id AND i.inv_status_flag = 1)","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"domain":"i","name":"inv_id"}},{"type":354,"column":{"type":355,"domain":"c","name":"name"}}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"},"alias":"i"},"joins":{"type":360,"qualified":{"type":355,"name":"Customers"},"alias":{"type":355,"name":"c"},"conditions":{"type":356,"left":{"type":61,"left":{"type":61,"left":{"type":355,"domain":"i","name":"inv_cst_id"},"right":{"type":266,"left":{"type":355,"domain":"c","name":"id"},"right":{"type":355,"domain":"i","name":"inv_status_flag"}}},"right":{"type":258,"value":"1"}}}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/JoinTest#6": {"source":"SELECT i.inv_id, c.name, p.description FROM Invoices AS i INNER JOIN Customers AS c ON i.inv_cst_id = c.id LEFT JOIN Products AS p ON i.inv_id = p.inv_id","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"domain":"i","name":"inv_id"}},{"type":354,"column":{"type":355,"domain":"c","name":"name"}},{"type":354,"column":{"type":355,"domain":"p","name":"description"}}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"},"alias":"i"},"joins":[{"type":360,"qualified":{"type":355,"name":"Customers"},"alias":{"type":355,"name":"c"},"conditions":{"type":61,"left":{"type":355,"domain":"i","name":"inv_cst_id"},"right":{"type":355,"domain":"c","name":"id"}}},{"type":361,"qualified":{"type":355,"name":"Products"},"alias":{"type":355,"name":"p"},"conditions":{"type":61,"left":{"type":355,"domain":"i","name":"inv_id"},"right":{"type":355,"domain":"p","name":"inv_id"}}}]}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"domain":"i","name":"inv_id"}},{"type":354,"column":{"type":355,"domain":"c","name":"name"}},{"type":354,"column":{"type":355,"domain":"p","name":"description"}}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"},"alias":"i"},"joins":[{"type":360,"qualified":{"type":355,"name":"Customers"},"alias":{"type":355,"name":"c"},"conditions":{"type":61,"left":{"type":355,"domain":"i","name":"inv_cst_id"},"right":{"type":355,"domain":"c","name":"id"}}},{"type":361,"qualified":{"type":355,"name":"Products"},"alias":{"type":355,"name":"p"},"conditions":{"type":61,"left":{"type":355,"domain":"i","name":"inv_id"},"right":{"type":355,"domain":"p","name":"inv_id"}}}]}}}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/JoinTest#7": {"source":"SELECT i.inv_id, c.name FROM Invoices AS i JOIN Customers AS c ON i.inv_cst_id = c.id","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"domain":"i","name":"inv_id"}},{"type":354,"column":{"type":355,"domain":"c","name":"name"}}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"},"alias":"i"},"joins":{"type":360,"qualified":{"type":355,"name":"Customers"},"alias":{"type":355,"name":"c"},"conditions":{"type":61,"left":{"type":355,"domain":"i","name":"inv_cst_id"},"right":{"type":355,"domain":"c","name":"id"}}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"domain":"i","name":"inv_id"}},{"type":354,"column":{"type":355,"domain":"c","name":"name"}}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"},"alias":"i"},"joins":{"type":360,"qualified":{"type":355,"name":"Customers"},"alias":{"type":355,"name":"c"},"conditions":{"type":61,"left":{"type":355,"domain":"i","name":"inv_cst_id"},"right":{"type":355,"domain":"c","name":"id"}}}}}}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/JoinTest#8": {"source":"SELECT i.inv_id, c.name FROM Invoices AS i LEFT JOIN Customers AS c ON i.inv_cst_id = c.id","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"domain":"i","name":"inv_id"}},{"type":354,"column":{"type":355,"domain":"c","name":"name"}}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"},"alias":"i"},"joins":{"type":361,"qualified":{"type":355,"name":"Customers"},"alias":{"type":355,"name":"c"},"conditions":{"type":61,"left":{"type":355,"domain":"i","name":"inv_cst_id"},"right":{"type":355,"domain":"c","name":"id"}}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"domain":"i","name":"inv_id"}},{"type":354,"column":{"type":355,"domain":"c","name":"name"}}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"},"alias":"i"},"joins":{"type":361,"qualified":{"type":355,"name":"Customers"},"alias":{"type":355,"name":"c"},"conditions":{"type":61,"left":{"type":355,"domain":"i","name":"inv_cst_id"},"right":{"type":355,"domain":"c","name":"id"}}}}}}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/JoinTest#9": {"source":"SELECT i.inv_id, c.name FROM Invoices AS i LEFT OUTER JOIN Customers AS c ON i.inv_cst_id = c.id","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"domain":"i","name":"inv_id"}},{"type":354,"column":{"type":355,"domain":"c","name":"name"}}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"},"alias":"i"},"joins":{"type":361,"qualified":{"type":355,"name":"Customers"},"alias":{"type":355,"name":"c"},"conditions":{"type":61,"left":{"type":355,"domain":"i","name":"inv_cst_id"},"right":{"type":355,"domain":"c","name":"id"}}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"domain":"i","name":"inv_id"}},{"type":354,"column":{"type":355,"domain":"c","name":"name"}}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"},"alias":"i"},"joins":{"type":361,"qualified":{"type":355,"name":"Customers"},"alias":{"type":355,"name":"c"},"conditions":{"type":61,"left":{"type":355,"domain":"i","name":"inv_cst_id"},"right":{"type":355,"domain":"c","name":"id"}}}}}}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/JoinTest#10": {"source":"SELECT i.inv_id, c.name FROM Invoices AS i RIGHT JOIN Customers AS c ON i.inv_cst_id = c.id","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"domain":"i","name":"inv_id"}},{"type":354,"column":{"type":355,"domain":"c","name":"name"}}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"},"alias":"i"},"joins":{"type":362,"qualified":{"type":355,"name":"Customers"},"alias":{"type":355,"name":"c"},"conditions":{"type":61,"left":{"type":355,"domain":"i","name":"inv_cst_id"},"right":{"type":355,"domain":"c","name":"id"}}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"domain":"i","name":"inv_id"}},{"type":354,"column":{"type":355,"domain":"c","name":"name"}}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"},"alias":"i"},"joins":{"type":362,"qualified":{"type":355,"name":"Customers"},"alias":{"type":355,"name":"c"},"conditions":{"type":61,"left":{"type":355,"domain":"i","name":"inv_cst_id"},"right":{"type":355,"domain":"c","name":"id"}}}}}}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/JoinTest#11": {"source":"SELECT i.inv_id, c.name FROM Invoices AS i RIGHT OUTER JOIN Customers AS c ON i.inv_cst_id = c.id","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"domain":"i","name":"inv_id"}},{"type":354,"column":{"type":355,"domain":"c","name":"name"}}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"},"alias":"i"},"joins":{"type":362,"qualified":{"type":355,"name":"Customers"},"alias":{"type":355,"name":"c"},"conditions":{"type":61,"left":{"type":355,"domain":"i","name":"inv_cst_id"},"right":{"type":355,"domain":"c","name":"id"}}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"domain":"i","name":"inv_id"}},{"type":354,"column":{"type":355,"domain":"c","name":"name"}}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"},"alias":"i"},"joins":{"type":362,"qualified":{"type":355,"name":"Customers"},"alias":{"type":355,"name":"c"},"conditions":{"type":61,"left":{"type":355,"domain":"i","name":"inv_cst_id"},"right":{"type":355,"domain":"c","name":"id"}}}}}}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/KeywordCollisionsNameTest#1": {"source":"SELECT [Order], [Group] FROM Items","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"Order"}},{"type":354,"column":{"type":355,"name":"Group"}}],"tables":{"qualifiedName":{"type":355,"name":"Items"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"Order"}},{"type":354,"column":{"type":355,"name":"Group"}}],"tables":{"qualifiedName":{"type":355,"name":"Items"}}}}}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/KeywordCollisionsNameTest#2": {"source":"SELECT [Delete], [Update] FROM AuditLog","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"Delete"}},{"type":354,"column":{"type":355,"name":"Update"}}],"tables":{"qualifiedName":{"type":355,"name":"AuditLog"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"Delete"}},{"type":354,"column":{"type":355,"name":"Update"}}],"tables":{"qualifiedName":{"type":355,"name":"AuditLog"}}}}}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/KeywordCollisionsNameTest#3": {"source":"Delete","parse":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/KeywordCollisionsNameTest#4": {"source":"Update","parse":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/KeywordCollisionsNameTest#5": {"source":"SELECT [Order], [Desc] FROM Items ORDER BY [Order] ASC","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"Order"}},{"type":354,"column":{"type":355,"name":"Desc"}}],"tables":{"qualifiedName":{"type":355,"name":"Items"}}},"orderBy":{"column":{"type":355,"name":"Order"},"sort":327}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"Order"}},{"type":354,"column":{"type":355,"name":"Desc"}}],"tables":{"qualifiedName":{"type":355,"name":"Items"}}},"orderBy":{"column":{"type":355,"name":"Order"},"sort":327}}}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/KeywordCollisionsNameTest#6": {"source":"SELECT [Values], [Set] FROM Config","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"Values"}},{"type":354,"column":{"type":355,"name":"Set"}}],"tables":{"qualifiedName":{"type":355,"name":"Config"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"Values"}},{"type":354,"column":{"type":355,"name":"Set"}}],"tables":{"qualifiedName":{"type":355,"name":"Config"}}}}}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/KeywordCollisionsNameTest#7": {"source":"SELECT * FROM Items WHERE [Select] = 1","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Items"}}},"where":{"type":61,"left":{"type":355,"name":"Select"},"right":{"type":258,"value":"1"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/KeywordCollisionsNameTest#8": {"source":"Select","parse":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/KeywordCollisionsNameTest#9": {"source":"SELECT * FROM Items WHERE [In] = 1","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Items"}}},"where":{"type":61,"left":{"type":355,"name":"In"},"right":{"type":258,"value":"1"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/KeywordCollisionsNameTest#10": {"source":"SELECT * FROM Items WHERE [From] IS NOT NULL","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Items"}}},"where":{"type":366,"left":{"type":355,"name":"From"}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Items"}}},"where":{"type":366,"left":{"type":355,"name":"From"}}}}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/KeywordCollisionsNameTest#11": {"source":"SELECT * FROM Items WHERE [Null] IS NULL","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Items"}}},"where":{"type":365,"left":{"type":355,"name":"Null"}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Items"}}},"where":{"type":365,"left":{"type":355,"name":"Null"}}}}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/KeywordCollisionsNameTest#12": {"source":"SELECT * FROM Items WHERE [Where] = 'test'","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Items"}}},"where":{"type":61,"left":{"type":355,"name":"Where"},"right":{"type":260,"value":"test"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/KeywordCollisionsNameTest#13": {"source":"SELECT * FROM Items WHERE [Not] = 0","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Items"}}},"where":{"type":61,"left":{"type":355,"name":"Not"},"right":{"type":258,"value":"0"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/KeywordPrefixNameTest#1": {"source":"SELECT * FROM Robots r LEFT JOIN RobotsParts rp ON r.notes_id = rp.robots_id","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Robots"},"alias":"r"},"joins":{"type":361,"qualified":{"type":355,"name":"RobotsParts"},"alias":{"type":355,"name":"rp"},"conditions":{"type":61,"left":{"type":355,"domain":"r","name":"notes_id"},"right":{"type":355,"domain":"rp","name":"robots_id"}}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Robots"},"alias":"r"},"joins":{"type":361,"qualified":{"type":355,"name":"RobotsParts"},"alias":{"type":355,"name":"rp"},"conditions":{"type":61,"left":{"type":355,"domain":"r","name":"notes_id"},"right":{"type":355,"domain":"rp","name":"robots_id"}}}}}}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/KeywordPrefixNameTest#2": {"source":"SELECT Groups FROM Settings","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"Groups"}}],"tables":{"qualifiedName":{"type":355,"name":"Settings"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"Groups"}}],"tables":{"qualifiedName":{"type":355,"name":"Settings"}}}}}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/KeywordPrefixNameTest#3": {"source":"SELECT [Groups] FROM Settings","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"Groups"}}],"tables":{"qualifiedName":{"type":355,"name":"Settings"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"Groups"}}],"tables":{"qualifiedName":{"type":355,"name":"Settings"}}}}}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/KeywordPrefixNameTest#4": {"source":"SELECT Notes FROM Contacts","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"Notes"}}],"tables":{"qualifiedName":{"type":355,"name":"Contacts"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"Notes"}}],"tables":{"qualifiedName":{"type":355,"name":"Contacts"}}}}}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/KeywordPrefixNameTest#5": {"source":"SELECT [Notes] FROM Contacts","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"Notes"}}],"tables":{"qualifiedName":{"type":355,"name":"Contacts"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"Notes"}}],"tables":{"qualifiedName":{"type":355,"name":"Contacts"}}}}}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/KeywordPrefixNameTest#6": {"source":"SELECT Orders FROM Customers","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"Orders"}}],"tables":{"qualifiedName":{"type":355,"name":"Customers"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"Orders"}}],"tables":{"qualifiedName":{"type":355,"name":"Customers"}}}}}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/KeywordPrefixNameTest#7": {"source":"SELECT [Orders] FROM Customers","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"Orders"}}],"tables":{"qualifiedName":{"type":355,"name":"Customers"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"Orders"}}],"tables":{"qualifiedName":{"type":355,"name":"Customers"}}}}}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/KeywordPrefixNameTest#8": {"source":"SELECT * FROM Contacts WHERE [Notes] IS NOT NULL","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Contacts"}}},"where":{"type":366,"left":{"type":355,"name":"Notes"}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Contacts"}}},"where":{"type":366,"left":{"type":355,"name":"Notes"}}}}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/KeywordPrefixNameTest#9": {"source":"SELECT * FROM Contacts WHERE [Notes] LIKE '%important%'","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Contacts"}}},"where":{"type":268,"left":{"type":355,"name":"Notes"},"right":{"type":260,"value":"%important%"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/KeywordPrefixNameTest#10": {"source":"SELECT COUNT(*) AS rowcount FROM Travel WHERE notification_sent=1","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":350,"name":"COUNT","arguments":[{"type":352}]},"alias":"rowcount"}],"tables":{"qualifiedName":{"type":355,"name":"Travel"}}},"where":{"type":61,"left":{"type":355,"name":"notification_sent"},"right":{"type":258,"value":"1"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/LikeTest#1": {"source":"SELECT * FROM Invoices WHERE inv_title ILIKE '%invoice%'","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}},"where":{"type":275,"left":{"type":355,"name":"inv_title"},"right":{"type":260,"value":"%invoice%"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/LikeTest#2": {"source":"SELECT * FROM Invoices WHERE inv_title LIKE '%test%'","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}},"where":{"type":268,"left":{"type":355,"name":"inv_title"},"right":{"type":260,"value":"%test%"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/LikeTest#3": {"source":"SELECT * FROM Invoices WHERE inv_title NOT ILIKE '%draft%'","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}},"where":{"type":357,"left":{"type":355,"name":"inv_title"},"right":{"type":260,"value":"%draft%"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/LikeTest#4": {"source":"SELECT * FROM Invoices WHERE inv_title NOT LIKE '%draft%'","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}},"where":{"type":351,"left":{"type":355,"name":"inv_title"},"right":{"type":260,"value":"%draft%"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/LimitTest#1": {"source":"SELECT * FROM Invoices LIMIT 10","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}},"limit":{"number":{"type":258,"value":"10"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/LimitTest#2": {"source":"SELECT * FROM Invoices LIMIT 20, 10","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}},"limit":{"number":{"type":258,"value":"10"},"offset":{"type":258,"value":"20"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/LimitTest#3": {"source":"SELECT * FROM Invoices LIMIT {limit}","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}},"limit":{"number":{"type":277,"value":"limit"}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}},"limit":{"number":{"type":277,"value":"limit"}}}}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/LimitTest#4": {"source":"SELECT * FROM Invoices LIMIT {limit} OFFSET {offset}","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}},"limit":{"number":{"type":277,"value":"limit"},"offset":{"type":277,"value":"offset"}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}},"limit":{"number":{"type":277,"value":"limit"},"offset":{"type":277,"value":"offset"}}}}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/LimitTest#5": {"source":"SELECT * FROM Invoices LIMIT 10 OFFSET 20","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}},"limit":{"number":{"type":258,"value":"10"},"offset":{"type":258,"value":"20"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/LimitTest#6": {"source":"SELECT * FROM Invoices LIMIT :limit: OFFSET :offset:","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}},"limit":{"number":{"type":274,"value":"limit"},"offset":{"type":274,"value":"offset"}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}},"limit":{"number":{"type":274,"value":"limit"},"offset":{"type":274,"value":"offset"}}}}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/LimitTest#7": {"source":"SELECT * FROM Invoices LIMIT ?0","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}},"limit":{"number":{"type":273,"value":"?0"}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}},"limit":{"number":{"type":273,"value":"?0"}}}}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/LimitTest#8": {"source":"SELECT * FROM Invoices WHERE inv_status_flag = 1 ORDER BY inv_id DESC LIMIT 5","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}},"where":{"type":61,"left":{"type":355,"name":"inv_status_flag"},"right":{"type":258,"value":"1"}},"orderBy":{"column":{"type":355,"name":"inv_id"},"sort":328},"limit":{"number":{"type":258,"value":"5"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/LiteralsTest#1": {"source":"SELECT * FROM Invoices WHERE inv_status_flag = FALSE","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}},"where":{"type":61,"left":{"type":355,"name":"inv_status_flag"},"right":{"type":335}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/LiteralsTest#2": {"source":"SELECT * FROM Invoices WHERE inv_total = 100.5","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}},"where":{"type":61,"left":{"type":355,"name":"inv_total"},"right":{"type":259,"value":"100.5"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/LiteralsTest#3": {"source":"SELECT * FROM Invoices WHERE inv_total = .5","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}},"where":{"type":61,"left":{"type":355,"name":"inv_total"},"right":{"type":259,"value":".5"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/LiteralsTest#4": {"source":"SELECT * FROM Invoices WHERE inv_total = 100.","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}},"where":{"type":61,"left":{"type":355,"name":"inv_total"},"right":{"type":259,"value":"100."}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/LiteralsTest#5": {"source":"SELECT NULL FROM Invoices","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":322}}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":322}}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}}}}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/LiteralsTest#6": {"source":"SELECT * FROM Invoices WHERE inv_status_flag = TRUE","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}},"where":{"type":61,"left":{"type":355,"name":"inv_status_flag"},"right":{"type":334}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/LiteralsTest#7": {"source":"SELECT * FROM Invoices WHERE inv_id = 0xFF","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}},"where":{"type":61,"left":{"type":355,"name":"inv_id"},"right":{"type":414,"value":"0xFF"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/MatchAgainstTest#1": {"source":"SELECT * FROM Invoices WHERE inv_title AGAINST 'invoice'","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}},"where":{"type":276,"left":{"type":355,"name":"inv_title"},"right":{"type":260,"value":"invoice"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/MatchAgainstTest#2": {"source":"SELECT * FROM Invoices WHERE MATCH(inv_title) AGAINST ('invoice')","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}},"where":{"type":276,"left":{"type":350,"name":"MATCH","arguments":[{"type":355,"name":"inv_title"}]},"right":{"type":356,"left":{"type":260,"value":"invoice"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/NullTest#1": {"source":"SELECT * FROM Invoices WHERE inv_title IS NOT NULL","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}},"where":{"type":366,"left":{"type":355,"name":"inv_title"}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}},"where":{"type":366,"left":{"type":355,"name":"inv_title"}}}}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/NullTest#2": {"source":"SELECT * FROM Invoices WHERE inv_title IS NULL","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}},"where":{"type":365,"left":{"type":355,"name":"inv_title"}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}},"where":{"type":365,"left":{"type":355,"name":"inv_title"}}}}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/OperatorsTest#1": {"source":"SELECT inv_total + 10 FROM Invoices","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":43,"left":{"type":355,"name":"inv_total"},"right":{"type":258,"value":"10"}}}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/OperatorsTest#2": {"source":"SELECT inv_total / 2 FROM Invoices","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":47,"left":{"type":355,"name":"inv_total"},"right":{"type":258,"value":"2"}}}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/OperatorsTest#3": {"source":"SELECT inv_total % 3 FROM Invoices","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":37,"left":{"type":355,"name":"inv_total"},"right":{"type":258,"value":"3"}}}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/OperatorsTest#4": {"source":"SELECT inv_total * 1.1 FROM Invoices","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":42,"left":{"type":355,"name":"inv_total"},"right":{"type":259,"value":"1.1"}}}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/OperatorsTest#5": {"source":"SELECT inv_id, inv_total * 1.1 AS total_with_tax FROM Invoices","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"inv_id"}},{"type":354,"column":{"type":42,"left":{"type":355,"name":"inv_total"},"right":{"type":259,"value":"1.1"}},"alias":"total_with_tax"}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/OperatorsTest#6": {"source":"SELECT inv_id, (inv_total + 5) * 2 AS adjusted FROM Invoices","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"inv_id"}},{"type":354,"column":{"type":42,"left":{"type":356,"left":{"type":43,"left":{"type":355,"name":"inv_total"},"right":{"type":258,"value":"5"}}},"right":{"type":258,"value":"2"}},"alias":"adjusted"}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/OperatorsTest#7": {"source":"SELECT inv_total - 5 FROM Invoices","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":45,"left":{"type":355,"name":"inv_total"},"right":{"type":258,"value":"5"}}}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/OrderByTest#1": {"source":"SELECT inv_cst_id, COUNT(*) FROM Invoices GROUP BY inv_cst_id ORDER BY COUNT(*) DESC","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"inv_cst_id"}},{"type":354,"column":{"type":350,"name":"COUNT","arguments":[{"type":352}]}}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}},"orderBy":{"column":{"type":350,"name":"COUNT","arguments":[{"type":352}]},"sort":328},"groupBy":{"type":355,"name":"inv_cst_id"}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"inv_cst_id"}},{"type":354,"column":{"type":350,"name":"COUNT","arguments":[{"type":352}]}}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}},"orderBy":{"column":{"type":350,"name":"COUNT","arguments":[{"type":352}]},"sort":328},"groupBy":{"type":355,"name":"inv_cst_id"}}}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/OrderByTest#2": {"source":"SELECT * FROM Invoices ORDER BY inv_created_at DESC, inv_id ASC","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}},"orderBy":[{"column":{"type":355,"name":"inv_created_at"},"sort":328},{"column":{"type":355,"name":"inv_id"},"sort":327}]}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}},"orderBy":[{"column":{"type":355,"name":"inv_created_at"},"sort":328},{"column":{"type":355,"name":"inv_id"},"sort":327}]}}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/OrderByTest#3": {"source":"SELECT * FROM Invoices ORDER BY inv_total DESC, inv_title ASC, inv_id ASC","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}},"orderBy":[{"column":{"type":355,"name":"inv_total"},"sort":328},{"column":{"type":355,"name":"inv_title"},"sort":327},{"column":{"type":355,"name":"inv_id"},"sort":327}]}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}},"orderBy":[{"column":{"type":355,"name":"inv_total"},"sort":328},{"column":{"type":355,"name":"inv_title"},"sort":327},{"column":{"type":355,"name":"inv_id"},"sort":327}]}}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/OrderByTest#4": {"source":"SELECT * FROM Invoices ORDER BY inv_id","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}},"orderBy":{"column":{"type":355,"name":"inv_id"}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}},"orderBy":{"column":{"type":355,"name":"inv_id"}}}}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/OrderByTest#5": {"source":"SELECT * FROM Invoices ORDER BY inv_id ASC","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}},"orderBy":{"column":{"type":355,"name":"inv_id"},"sort":327}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}},"orderBy":{"column":{"type":355,"name":"inv_id"},"sort":327}}}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/OrderByTest#6": {"source":"SELECT * FROM Invoices ORDER BY inv_id DESC","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}},"orderBy":{"column":{"type":355,"name":"inv_id"},"sort":328}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}},"orderBy":{"column":{"type":355,"name":"inv_id"},"sort":328}}}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/QualifiedNamesTest#1": {"source":"SELECT * FROM App\\Models\\Invoices","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"App\\Models\\Invoices"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"App\\Models\\Invoices"}}}}}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/QualifiedNamesTest#2": {"source":"SELECT i.inv_id FROM App\\Models\\Invoices AS i","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"domain":"i","name":"inv_id"}}],"tables":{"qualifiedName":{"type":355,"name":"App\\Models\\Invoices"},"alias":"i"}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"domain":"i","name":"inv_id"}}],"tables":{"qualifiedName":{"type":355,"name":"App\\Models\\Invoices"},"alias":"i"}}}}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/QualifiedNamesTest#3": {"source":"SELECT * FROM App\\Models\\Invoices WHERE inv_id = 1","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"App\\Models\\Invoices"}}},"where":{"type":61,"left":{"type":355,"name":"inv_id"},"right":{"type":258,"value":"1"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/ScalarTest#1": {"source":"SELECT ABS(inv_total) FROM Invoices","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":350,"name":"ABS","arguments":[{"type":355,"name":"inv_total"}]}}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":350,"name":"ABS","arguments":[{"type":355,"name":"inv_total"}]}}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}}}}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/ScalarTest#2": {"source":"SELECT COALESCE(inv_title, 'N/A') FROM Invoices","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":350,"name":"COALESCE","arguments":[{"type":355,"name":"inv_title"},{"type":260,"value":"N/A"}]}}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/ScalarTest#3": {"source":"SELECT CONCAT(inv_title, ' - paid') FROM Invoices","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":350,"name":"CONCAT","arguments":[{"type":355,"name":"inv_title"},{"type":260,"value":" - paid"}]}}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/ScalarTest#4": {"source":"SELECT IFNULL(inv_title, 'N/A') FROM Invoices","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":350,"name":"IFNULL","arguments":[{"type":355,"name":"inv_title"},{"type":260,"value":"N/A"}]}}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/ScalarTest#5": {"source":"SELECT LENGTH(inv_title) FROM Invoices","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":350,"name":"LENGTH","arguments":[{"type":355,"name":"inv_title"}]}}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":350,"name":"LENGTH","arguments":[{"type":355,"name":"inv_title"}]}}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}}}}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/ScalarTest#6": {"source":"SELECT LOWER(inv_title) FROM Invoices","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":350,"name":"LOWER","arguments":[{"type":355,"name":"inv_title"}]}}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":350,"name":"LOWER","arguments":[{"type":355,"name":"inv_title"}]}}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}}}}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/ScalarTest#7": {"source":"SELECT MONTH(inv_created_at), COUNT(*) FROM Invoices GROUP BY MONTH(inv_created_at)","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":350,"name":"MONTH","arguments":[{"type":355,"name":"inv_created_at"}]}},{"type":354,"column":{"type":350,"name":"COUNT","arguments":[{"type":352}]}}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}},"groupBy":{"type":350,"name":"MONTH","arguments":[{"type":355,"name":"inv_created_at"}]}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":350,"name":"MONTH","arguments":[{"type":355,"name":"inv_created_at"}]}},{"type":354,"column":{"type":350,"name":"COUNT","arguments":[{"type":352}]}}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}},"groupBy":{"type":350,"name":"MONTH","arguments":[{"type":355,"name":"inv_created_at"}]}}}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/ScalarTest#8": {"source":"SELECT NOW() FROM Invoices","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":350,"name":"NOW"}}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":350,"name":"NOW"}}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}}}}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/ScalarTest#9": {"source":"SELECT ROUND(inv_total, 2) FROM Invoices","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":350,"name":"ROUND","arguments":[{"type":355,"name":"inv_total"},{"type":258,"value":"2"}]}}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/ScalarTest#10": {"source":"SELECT TRIM(inv_title) FROM Invoices","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":350,"name":"TRIM","arguments":[{"type":355,"name":"inv_title"}]}}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":350,"name":"TRIM","arguments":[{"type":355,"name":"inv_title"}]}}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}}}}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/ScalarTest#11": {"source":"SELECT UPPER(inv_title) FROM Invoices","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":350,"name":"UPPER","arguments":[{"type":355,"name":"inv_title"}]}}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":350,"name":"UPPER","arguments":[{"type":355,"name":"inv_title"}]}}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}}}}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/ScalarTest#12": {"source":"SELECT YEAR(inv_created_at) FROM Invoices","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":350,"name":"YEAR","arguments":[{"type":355,"name":"inv_created_at"}]}}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":350,"name":"YEAR","arguments":[{"type":355,"name":"inv_created_at"}]}}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}}}}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/SubqueriesTest#1": {"source":"SELECT i.inv_id, (SELECT COUNT(*) FROM Invoices WHERE inv_cst_id = i.inv_cst_id) AS cst_count FROM Invoices i","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"domain":"i","name":"inv_id"}},{"type":354,"column":{"type":407,"left":{"type":309,"select":{"columns":[{"type":354,"column":{"type":350,"name":"COUNT","arguments":[{"type":352}]}}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}},"where":{"type":61,"left":{"type":355,"name":"inv_cst_id"},"right":{"type":355,"domain":"i","name":"inv_cst_id"}}}},"alias":"cst_count"}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"},"alias":"i"}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"domain":"i","name":"inv_id"}},{"type":354,"column":{"type":407,"left":{"type":309,"select":{"columns":[{"type":354,"column":{"type":350,"name":"COUNT","arguments":[{"type":352}]}}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}},"where":{"type":61,"left":{"type":355,"name":"inv_cst_id"},"right":{"type":355,"domain":"i","name":"inv_cst_id"}}}},"alias":"cst_count"}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"},"alias":"i"}}}}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/SubqueriesTest#2": {"source":"SELECT * FROM Invoices WHERE inv_total = (SELECT MAX(inv_total) FROM Invoices)","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}},"where":{"type":61,"left":{"type":355,"name":"inv_total"},"right":{"type":407,"left":{"type":309,"select":{"columns":[{"type":354,"column":{"type":350,"name":"MAX","arguments":[{"type":355,"name":"inv_total"}]}}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}}}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}},"where":{"type":61,"left":{"type":355,"name":"inv_total"},"right":{"type":407,"left":{"type":309,"select":{"columns":[{"type":354,"column":{"type":350,"name":"MAX","arguments":[{"type":355,"name":"inv_total"}]}}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}}}}}}}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/SubqueriesTest#3": {"source":"SELECT * FROM Invoices WHERE EXISTS (SELECT id FROM Customers WHERE id = Invoices.inv_cst_id)","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}},"where":{"type":408,"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"id"}}],"tables":{"qualifiedName":{"type":355,"name":"Customers"}}},"where":{"type":61,"left":{"type":355,"name":"id"},"right":{"type":355,"domain":"Invoices","name":"inv_cst_id"}}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}},"where":{"type":408,"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"id"}}],"tables":{"qualifiedName":{"type":355,"name":"Customers"}}},"where":{"type":61,"left":{"type":355,"name":"id"},"right":{"type":355,"domain":"Invoices","name":"inv_cst_id"}}}}}}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/SubqueriesTest#4": {"source":"SELECT * FROM Invoices WHERE inv_cst_id IN (SELECT id FROM Customers WHERE id IN (SELECT cst_id FROM Orders WHERE status = 1))","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}},"where":{"type":315,"left":{"type":355,"name":"inv_cst_id"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"id"}}],"tables":{"qualifiedName":{"type":355,"name":"Customers"}}},"where":{"type":315,"left":{"type":355,"name":"id"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"cst_id"}}],"tables":{"qualifiedName":{"type":355,"name":"Orders"}}},"where":{"type":61,"left":{"type":355,"name":"status"},"right":{"type":258,"value":"1"}}}}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/SubqueriesTest#5": {"source":"SELECT * FROM Invoices WHERE inv_cst_id IN (SELECT id FROM Customers WHERE status = 1)","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}},"where":{"type":315,"left":{"type":355,"name":"inv_cst_id"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"id"}}],"tables":{"qualifiedName":{"type":355,"name":"Customers"}}},"where":{"type":61,"left":{"type":355,"name":"status"},"right":{"type":258,"value":"1"}}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/SubqueriesTest#6": {"source":"SELECT * FROM Invoices WHERE inv_cst_id NOT IN (SELECT id FROM Customers WHERE status = 0)","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}},"where":{"type":323,"left":{"type":355,"name":"inv_cst_id"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"id"}}],"tables":{"qualifiedName":{"type":355,"name":"Customers"}}},"where":{"type":61,"left":{"type":355,"name":"status"},"right":{"type":258,"value":"0"}}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/UnaryMinusTest#1": {"source":"SELECT -inv_total FROM Invoices","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":367,"right":{"type":355,"name":"inv_total"}}}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":367,"right":{"type":355,"name":"inv_total"}}}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}}}}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/UnaryMinusTest#2": {"source":"SELECT * FROM Invoices WHERE inv_total > -1","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}},"where":{"type":62,"left":{"type":355,"name":"inv_total"},"right":{"type":367,"right":{"type":258,"value":"1"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/WhereInTest#1": {"source":"SELECT * FROM Invoices WHERE inv_status_flag IN (0, 1, 2)","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}},"where":{"type":315,"left":{"type":355,"name":"inv_status_flag"},"right":[{"type":258,"value":"0"},{"type":258,"value":"1"},{"type":258,"value":"2"}]}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/WhereInTest#2": {"source":"SELECT * FROM Invoices WHERE inv_status_flag NOT IN (0, 1)","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}},"where":{"type":323,"left":{"type":355,"name":"inv_status_flag"},"right":[{"type":258,"value":"0"},{"type":258,"value":"1"}]}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/WhereLogicalTest#1": {"source":"SELECT * FROM Invoices WHERE inv_status_flag = 1 AND inv_total > 0","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}},"where":{"type":62,"left":{"type":61,"left":{"type":355,"name":"inv_status_flag"},"right":{"type":266,"left":{"type":258,"value":"1"},"right":{"type":355,"name":"inv_total"}}},"right":{"type":258,"value":"0"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/WhereLogicalTest#2": {"source":"SELECT * FROM Invoices WHERE inv_cst_id = 1 AND inv_status_flag = 1 AND inv_total > 0","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}},"where":{"type":62,"left":{"type":61,"left":{"type":61,"left":{"type":355,"name":"inv_cst_id"},"right":{"type":266,"left":{"type":258,"value":"1"},"right":{"type":355,"name":"inv_status_flag"}}},"right":{"type":266,"left":{"type":258,"value":"1"},"right":{"type":355,"name":"inv_total"}}},"right":{"type":258,"value":"0"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/WhereLogicalTest#3": {"source":"SELECT * FROM Invoices WHERE NOT inv_status_flag = 0","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}},"where":{"type":61,"left":{"type":33,"right":{"type":355,"name":"inv_status_flag"}},"right":{"type":258,"value":"0"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/WhereLogicalTest#4": {"source":"SELECT * FROM Invoices WHERE inv_status_flag = 0 OR inv_status_flag = 1","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}},"where":{"type":61,"left":{"type":61,"left":{"type":355,"name":"inv_status_flag"},"right":{"type":267,"left":{"type":258,"value":"0"},"right":{"type":355,"name":"inv_status_flag"}}},"right":{"type":258,"value":"1"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/WhereLogicalTest#5": {"source":"SELECT * FROM Invoices WHERE (inv_status_flag = 1 OR inv_status_flag = 2) AND inv_total > 0","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}},"where":{"type":62,"left":{"type":266,"left":{"type":356,"left":{"type":61,"left":{"type":61,"left":{"type":355,"name":"inv_status_flag"},"right":{"type":267,"left":{"type":258,"value":"1"},"right":{"type":355,"name":"inv_status_flag"}}},"right":{"type":258,"value":"2"}}},"right":{"type":355,"name":"inv_total"}},"right":{"type":258,"value":"0"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/WherePlaceholdersTest#1": {"source":"SELECT * FROM Invoices WHERE inv_id = {id}","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}},"where":{"type":61,"left":{"type":355,"name":"inv_id"},"right":{"type":277,"value":"id"}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}},"where":{"type":61,"left":{"type":355,"name":"inv_id"},"right":{"type":277,"value":"id"}}}}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/WherePlaceholdersTest#2": {"source":"SELECT * FROM Invoices WHERE inv_cst_id = {custId} AND inv_total > {minTotal}","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}},"where":{"type":62,"left":{"type":61,"left":{"type":355,"name":"inv_cst_id"},"right":{"type":266,"left":{"type":277,"value":"custId"},"right":{"type":355,"name":"inv_total"}}},"right":{"type":277,"value":"minTotal"}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}},"where":{"type":62,"left":{"type":61,"left":{"type":355,"name":"inv_cst_id"},"right":{"type":266,"left":{"type":277,"value":"custId"},"right":{"type":355,"name":"inv_total"}}},"right":{"type":277,"value":"minTotal"}}}}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/WherePlaceholdersTest#3": {"source":"SELECT * FROM Invoices WHERE inv_id = ?0","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}},"where":{"type":61,"left":{"type":355,"name":"inv_id"},"right":{"type":273,"value":"?0"}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}},"where":{"type":61,"left":{"type":355,"name":"inv_id"},"right":{"type":273,"value":"?0"}}}}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/WherePlaceholdersTest#4": {"source":"SELECT * FROM Invoices WHERE inv_id = ?1 AND inv_status_flag = ?2","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}},"where":{"type":61,"left":{"type":61,"left":{"type":355,"name":"inv_id"},"right":{"type":266,"left":{"type":273,"value":"?1"},"right":{"type":355,"name":"inv_status_flag"}}},"right":{"type":273,"value":"?2"}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}},"where":{"type":61,"left":{"type":61,"left":{"type":355,"name":"inv_id"},"right":{"type":266,"left":{"type":273,"value":"?1"},"right":{"type":355,"name":"inv_status_flag"}}},"right":{"type":273,"value":"?2"}}}}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/WherePlaceholdersTest#5": {"source":"SELECT * FROM Invoices WHERE inv_title = :title:","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}},"where":{"type":61,"left":{"type":355,"name":"inv_title"},"right":{"type":274,"value":"title"}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}},"where":{"type":61,"left":{"type":355,"name":"inv_title"},"right":{"type":274,"value":"title"}}}}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/WherePlaceholdersTest#6": {"source":"SELECT * FROM Invoices WHERE inv_cst_id = :custId: AND inv_status_flag = :status:","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}},"where":{"type":61,"left":{"type":61,"left":{"type":355,"name":"inv_cst_id"},"right":{"type":266,"left":{"type":274,"value":"custId"},"right":{"type":355,"name":"inv_status_flag"}}},"right":{"type":274,"value":"status"}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}},"where":{"type":61,"left":{"type":61,"left":{"type":355,"name":"inv_cst_id"},"right":{"type":266,"left":{"type":274,"value":"custId"},"right":{"type":355,"name":"inv_status_flag"}}},"right":{"type":274,"value":"status"}}}}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/WhereTest#1": {"source":"SELECT * FROM Invoices WHERE inv_id = 1","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}},"where":{"type":61,"left":{"type":355,"name":"inv_id"},"right":{"type":258,"value":"1"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/WhereTest#2": {"source":"SELECT * FROM Invoices WHERE inv_title = 'test invoice'","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}},"where":{"type":61,"left":{"type":355,"name":"inv_title"},"right":{"type":260,"value":"test invoice"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/WhereTest#3": {"source":"SELECT * FROM Invoices WHERE UPPER(inv_title) = 'TEST INVOICE'","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}},"where":{"type":61,"left":{"type":350,"name":"UPPER","arguments":[{"type":355,"name":"inv_title"}]},"right":{"type":260,"value":"TEST INVOICE"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/WhereTest#4": {"source":"SELECT * FROM Invoices WHERE UPPER(inv_title) = :title:","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}},"where":{"type":61,"left":{"type":350,"name":"UPPER","arguments":[{"type":355,"name":"inv_title"}]},"right":{"type":274,"value":"title"}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}},"where":{"type":61,"left":{"type":350,"name":"UPPER","arguments":[{"type":355,"name":"inv_title"}]},"right":{"type":274,"value":"title"}}}}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/WhereTest#5": {"source":"SELECT * FROM Invoices WHERE inv_total >= 100.00","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}},"where":{"type":272,"left":{"type":355,"name":"inv_total"},"right":{"type":259,"value":"100.00"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/WhereTest#6": {"source":"SELECT * FROM Invoices WHERE inv_total > 100.00","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}},"where":{"type":62,"left":{"type":355,"name":"inv_total"},"right":{"type":259,"value":"100.00"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/WhereTest#7": {"source":"SELECT * FROM Invoices WHERE inv_total <= 100.00","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}},"where":{"type":271,"left":{"type":355,"name":"inv_total"},"right":{"type":259,"value":"100.00"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/WhereTest#8": {"source":"SELECT * FROM Invoices WHERE inv_total < 100.00","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}},"where":{"type":60,"left":{"type":355,"name":"inv_total"},"right":{"type":259,"value":"100.00"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/WhereTest#9": {"source":"SELECT * FROM Invoices WHERE inv_id != 1","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}},"where":{"type":270,"left":{"type":355,"name":"inv_id"},"right":{"type":258,"value":"1"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/WhereTest#10": {"source":"SELECT * FROM Invoices WHERE inv_id <> 1","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}},"where":{"type":270,"left":{"type":355,"name":"inv_id"},"right":{"type":258,"value":"1"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/WithTest#1": {"source":"SELECT * FROM Invoices AS i WITH cache","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"},"alias":"i","with":{"type":355,"name":"cache"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"},"alias":"i","with":{"type":355,"name":"cache"}}}}}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Select/WithTest#2": {"source":"SELECT * FROM Invoices AS i WITH (cache, shared)","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"},"alias":"i","with":[{"type":355,"name":"cache"},{"type":355,"name":"shared"}]}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"},"alias":"i","with":[{"type":355,"name":"cache"},{"type":355,"name":"shared"}]}}}}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Update/CombinationTest#1": {"source":"UPDATE Invoices SET inv_status_flag = 1","parse":{"outcome":"value","value":{"type":300,"update":{"tables":{"qualifiedName":{"type":355,"name":"Invoices"}},"values":{"column":{"type":355,"name":"inv_status_flag"},"expr":{"type":258,"value":"1"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Update/CombinationTest#2": {"source":"UPDATE Invoices AS i SET i.inv_status_flag = 1 WHERE i.inv_cst_id = 1","parse":{"outcome":"value","value":{"type":300,"update":{"tables":{"qualifiedName":{"type":355,"name":"Invoices"},"alias":"i"},"values":{"column":{"type":355,"domain":"i","name":"inv_status_flag"},"expr":{"type":258,"value":"1"}}},"where":{"type":61,"left":{"type":355,"domain":"i","name":"inv_cst_id"},"right":{"type":258,"value":"1"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Update/CombinationTest#3": {"source":"UPDATE Invoices SET inv_total = inv_total * 1.1 WHERE inv_status_flag = 0","parse":{"outcome":"value","value":{"type":300,"update":{"tables":{"qualifiedName":{"type":355,"name":"Invoices"}},"values":{"column":{"type":355,"name":"inv_total"},"expr":{"type":42,"left":{"type":355,"name":"inv_total"},"right":{"type":259,"value":"1.1"}}}},"where":{"type":61,"left":{"type":355,"name":"inv_status_flag"},"right":{"type":258,"value":"0"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Update/CombinationTest#4": {"source":"UPDATE Invoices INNER JOIN Customers ON Customers.cst_id = Invoices.inv_cst_id SET inv_total = 999","parse":{"outcome":"value","value":{"type":300,"update":{"tables":{"qualifiedName":{"type":355,"name":"Invoices"}},"joins":{"type":360,"qualified":{"type":355,"name":"Customers"},"conditions":{"type":61,"left":{"type":355,"domain":"Customers","name":"cst_id"},"right":{"type":355,"domain":"Invoices","name":"inv_cst_id"}}},"values":{"column":{"type":355,"name":"inv_total"},"expr":{"type":258,"value":"999"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Update/CombinationTest#5": {"source":"UPDATE Invoices AS i INNER JOIN Customers AS c ON c.cst_id = i.inv_cst_id SET i.inv_total = 999 WHERE c.cst_id = 1","parse":{"outcome":"value","value":{"type":300,"update":{"tables":{"qualifiedName":{"type":355,"name":"Invoices"},"alias":"i"},"joins":{"type":360,"qualified":{"type":355,"name":"Customers"},"alias":{"type":355,"name":"c"},"conditions":{"type":61,"left":{"type":355,"domain":"c","name":"cst_id"},"right":{"type":355,"domain":"i","name":"inv_cst_id"}}},"values":{"column":{"type":355,"domain":"i","name":"inv_total"},"expr":{"type":258,"value":"999"}}},"where":{"type":61,"left":{"type":355,"domain":"c","name":"cst_id"},"right":{"type":258,"value":"1"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Update/CombinationTest#6": {"source":"UPDATE Invoices INNER JOIN Customers ON Customers.cst_id = Invoices.inv_cst_id SET inv_total = 999 WHERE Customers.cst_id = 1","parse":{"outcome":"value","value":{"type":300,"update":{"tables":{"qualifiedName":{"type":355,"name":"Invoices"}},"joins":{"type":360,"qualified":{"type":355,"name":"Customers"},"conditions":{"type":61,"left":{"type":355,"domain":"Customers","name":"cst_id"},"right":{"type":355,"domain":"Invoices","name":"inv_cst_id"}}},"values":{"column":{"type":355,"name":"inv_total"},"expr":{"type":258,"value":"999"}}},"where":{"type":61,"left":{"type":355,"domain":"Customers","name":"cst_id"},"right":{"type":258,"value":"1"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Update/CombinationTest#7": {"source":"UPDATE Invoices INNER JOIN Customers ON Customers.cst_id = Invoices.inv_cst_id SET inv_total = 999 WHERE Customers.cst_id = 1 LIMIT 10","parse":{"outcome":"value","value":{"type":300,"update":{"tables":{"qualifiedName":{"type":355,"name":"Invoices"}},"joins":{"type":360,"qualified":{"type":355,"name":"Customers"},"conditions":{"type":61,"left":{"type":355,"domain":"Customers","name":"cst_id"},"right":{"type":355,"domain":"Invoices","name":"inv_cst_id"}}},"values":{"column":{"type":355,"name":"inv_total"},"expr":{"type":258,"value":"999"}}},"where":{"type":61,"left":{"type":355,"domain":"Customers","name":"cst_id"},"right":{"type":258,"value":"1"}},"limit":{"number":{"type":258,"value":"10"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Update/CombinationTest#8": {"source":"UPDATE Invoices INNER JOIN Customers ON Customers.cst_id = Invoices.inv_cst_id SET inv_total = :total: WHERE Customers.cst_id = :custId:","parse":{"outcome":"value","value":{"type":300,"update":{"tables":{"qualifiedName":{"type":355,"name":"Invoices"}},"joins":{"type":360,"qualified":{"type":355,"name":"Customers"},"conditions":{"type":61,"left":{"type":355,"domain":"Customers","name":"cst_id"},"right":{"type":355,"domain":"Invoices","name":"inv_cst_id"}}},"values":{"column":{"type":355,"name":"inv_total"},"expr":{"type":274,"value":"total"}}},"where":{"type":61,"left":{"type":355,"domain":"Customers","name":"cst_id"},"right":{"type":274,"value":"custId"}}}},"parseNoLiterals":{"outcome":"value","value":{"type":300,"update":{"tables":{"qualifiedName":{"type":355,"name":"Invoices"}},"joins":{"type":360,"qualified":{"type":355,"name":"Customers"},"conditions":{"type":61,"left":{"type":355,"domain":"Customers","name":"cst_id"},"right":{"type":355,"domain":"Invoices","name":"inv_cst_id"}}},"values":{"column":{"type":355,"name":"inv_total"},"expr":{"type":274,"value":"total"}}},"where":{"type":61,"left":{"type":355,"domain":"Customers","name":"cst_id"},"right":{"type":274,"value":"custId"}}}}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Update/CombinationTest#9": {"source":"UPDATE Invoices LEFT JOIN Customers ON Customers.cst_id = Invoices.inv_cst_id SET inv_total = 999 WHERE Customers.cst_id = 1","parse":{"outcome":"value","value":{"type":300,"update":{"tables":{"qualifiedName":{"type":355,"name":"Invoices"}},"joins":{"type":361,"qualified":{"type":355,"name":"Customers"},"conditions":{"type":61,"left":{"type":355,"domain":"Customers","name":"cst_id"},"right":{"type":355,"domain":"Invoices","name":"inv_cst_id"}}},"values":{"column":{"type":355,"name":"inv_total"},"expr":{"type":258,"value":"999"}}},"where":{"type":61,"left":{"type":355,"domain":"Customers","name":"cst_id"},"right":{"type":258,"value":"1"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Update/CombinationTest#10": {"source":"UPDATE Invoices INNER JOIN Customers ON Customers.cst_id = Invoices.inv_cst_id INNER JOIN Orders ON Orders.ord_cst_id = Customers.cst_id SET inv_total = 999 WHERE Orders.ord_id = 1","parse":{"outcome":"value","value":{"type":300,"update":{"tables":{"qualifiedName":{"type":355,"name":"Invoices"}},"joins":[{"type":360,"qualified":{"type":355,"name":"Customers"},"conditions":{"type":61,"left":{"type":355,"domain":"Customers","name":"cst_id"},"right":{"type":355,"domain":"Invoices","name":"inv_cst_id"}}},{"type":360,"qualified":{"type":355,"name":"Orders"},"conditions":{"type":61,"left":{"type":355,"domain":"Orders","name":"ord_cst_id"},"right":{"type":355,"domain":"Customers","name":"cst_id"}}}],"values":{"column":{"type":355,"name":"inv_total"},"expr":{"type":258,"value":"999"}}},"where":{"type":61,"left":{"type":355,"domain":"Orders","name":"ord_id"},"right":{"type":258,"value":"1"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Update/CombinationTest#11": {"source":"UPDATE Invoices SET inv_total = NULL WHERE inv_status_flag = 0","parse":{"outcome":"value","value":{"type":300,"update":{"tables":{"qualifiedName":{"type":355,"name":"Invoices"}},"values":{"column":{"type":355,"name":"inv_total"},"expr":{"type":322}}},"where":{"type":61,"left":{"type":355,"name":"inv_status_flag"},"right":{"type":258,"value":"0"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Update/CombinationTest#12": {"source":"UPDATE Invoices SET inv_status_flag = 0 LIMIT 10","parse":{"outcome":"value","value":{"type":300,"update":{"tables":{"qualifiedName":{"type":355,"name":"Invoices"}},"values":{"column":{"type":355,"name":"inv_status_flag"},"expr":{"type":258,"value":"0"}}},"limit":{"number":{"type":258,"value":"10"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Update/CombinationTest#13": {"source":"UPDATE Invoices SET inv_status_flag = ?0, inv_total = ?1 WHERE inv_id = ?2","parse":{"outcome":"value","value":{"type":300,"update":{"tables":{"qualifiedName":{"type":355,"name":"Invoices"}},"values":[{"column":{"type":355,"name":"inv_status_flag"},"expr":{"type":273,"value":"?0"}},{"column":{"type":355,"name":"inv_total"},"expr":{"type":273,"value":"?1"}}]},"where":{"type":61,"left":{"type":355,"name":"inv_id"},"right":{"type":273,"value":"?2"}}}},"parseNoLiterals":{"outcome":"value","value":{"type":300,"update":{"tables":{"qualifiedName":{"type":355,"name":"Invoices"}},"values":[{"column":{"type":355,"name":"inv_status_flag"},"expr":{"type":273,"value":"?0"}},{"column":{"type":355,"name":"inv_total"},"expr":{"type":273,"value":"?1"}}]},"where":{"type":61,"left":{"type":355,"name":"inv_id"},"right":{"type":273,"value":"?2"}}}}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Update/CombinationTest#14": {"source":"UPDATE Invoices SET inv_status_flag = 1, inv_title = 'Updated' WHERE inv_id = 1","parse":{"outcome":"value","value":{"type":300,"update":{"tables":{"qualifiedName":{"type":355,"name":"Invoices"}},"values":[{"column":{"type":355,"name":"inv_status_flag"},"expr":{"type":258,"value":"1"}},{"column":{"type":355,"name":"inv_title"},"expr":{"type":260,"value":"Updated"}}]},"where":{"type":61,"left":{"type":355,"name":"inv_id"},"right":{"type":258,"value":"1"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Update/CombinationTest#15": {"source":"UPDATE Invoices SET inv_status_flag = 1 WHERE inv_id = 1","parse":{"outcome":"value","value":{"type":300,"update":{"tables":{"qualifiedName":{"type":355,"name":"Invoices"}},"values":{"column":{"type":355,"name":"inv_status_flag"},"expr":{"type":258,"value":"1"}}},"where":{"type":61,"left":{"type":355,"name":"inv_id"},"right":{"type":258,"value":"1"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Update/CombinationTest#16": {"source":"UPDATE Invoices SET inv_status_flag = 1 WHERE inv_id IN (1, 2, 3)","parse":{"outcome":"value","value":{"type":300,"update":{"tables":{"qualifiedName":{"type":355,"name":"Invoices"}},"values":{"column":{"type":355,"name":"inv_status_flag"},"expr":{"type":258,"value":"1"}}},"where":{"type":315,"left":{"type":355,"name":"inv_id"},"right":[{"type":258,"value":"1"},{"type":258,"value":"2"},{"type":258,"value":"3"}]}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Update/CombinationTest#17": {"source":"UPDATE Invoices SET inv_title = :title: WHERE inv_id = :id:","parse":{"outcome":"value","value":{"type":300,"update":{"tables":{"qualifiedName":{"type":355,"name":"Invoices"}},"values":{"column":{"type":355,"name":"inv_title"},"expr":{"type":274,"value":"title"}}},"where":{"type":61,"left":{"type":355,"name":"inv_id"},"right":{"type":274,"value":"id"}}}},"parseNoLiterals":{"outcome":"value","value":{"type":300,"update":{"tables":{"qualifiedName":{"type":355,"name":"Invoices"}},"values":{"column":{"type":355,"name":"inv_title"},"expr":{"type":274,"value":"title"}}},"where":{"type":61,"left":{"type":355,"name":"inv_id"},"right":{"type":274,"value":"id"}}}}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Update/CombinationTest#18": {"source":"UPDATE Invoices SET inv_status_flag = TRUE WHERE inv_id = 1","parse":{"outcome":"value","value":{"type":300,"update":{"tables":{"qualifiedName":{"type":355,"name":"Invoices"}},"values":{"column":{"type":355,"name":"inv_status_flag"},"expr":{"type":334}}},"where":{"type":61,"left":{"type":355,"name":"inv_id"},"right":{"type":258,"value":"1"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Update/CombinationTest#19": {"source":"UPDATE Invoices SET inv_title = UPPER(inv_title) WHERE inv_status_flag = 1","parse":{"outcome":"value","value":{"type":300,"update":{"tables":{"qualifiedName":{"type":355,"name":"Invoices"}},"values":{"column":{"type":355,"name":"inv_title"},"expr":{"type":350,"name":"UPPER","arguments":[{"type":355,"name":"inv_title"}]}}},"where":{"type":61,"left":{"type":355,"name":"inv_status_flag"},"right":{"type":258,"value":"1"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cphalcon:unit/Mvc/Model/Query/Phql/Update/CombinationTest#20": {"source":"UPDATE Invoices SET inv_status_flag = 1 WHERE inv_cst_id = 1 AND inv_total > 100 AND inv_status_flag = 0","parse":{"outcome":"value","value":{"type":300,"update":{"tables":{"qualifiedName":{"type":355,"name":"Invoices"}},"values":{"column":{"type":355,"name":"inv_status_flag"},"expr":{"type":258,"value":"1"}}},"where":{"type":61,"left":{"type":62,"left":{"type":61,"left":{"type":355,"name":"inv_cst_id"},"right":{"type":266,"left":{"type":258,"value":"1"},"right":{"type":355,"name":"inv_total"}}},"right":{"type":266,"left":{"type":258,"value":"100"},"right":{"type":355,"name":"inv_status_flag"}}},"right":{"type":258,"value":"0"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "phalcon:database/Db/Dialect/DescribeReferencesTest#1": {"source":"SELECT c.relname AS TABLE_NAME, a.attname AS COLUMN_NAME, con.conname AS CONSTRAINT_NAME, current_database() AS REFERENCED_TABLE_SCHEMA, fc.relname AS REFERENCED_TABLE_NAME, fa.attname AS REFERENCED_COLUMN_NAME, CASE con.confupdtype WHEN 'c' THEN 'CASCADE' WHEN 'n' THEN 'SET NULL' WHEN 'd' THEN 'SET DEFAULT' WHEN 'r' THEN 'RESTRICT' WHEN 'a' THEN 'NO ACTION' END AS UPDATE_RULE, CASE con.confdeltype WHEN 'c' THEN 'CASCADE' WHEN 'n' THEN 'SET NULL' WHEN 'd' THEN 'SET DEFAULT' WHEN 'r' THEN 'RESTRICT' WHEN 'a' THEN 'NO ACTION' END AS DELETE_RULE FROM pg_catalog.pg_constraint AS con JOIN pg_catalog.pg_class AS c ON c.oid = con.conrelid JOIN pg_catalog.pg_namespace AS n ON n.oid = c.relnamespace JOIN pg_catalog.pg_class AS fc ON fc.oid = con.confrelid CROSS JOIN LATERAL unnest(con.conkey, con.confkey) WITH ORDINALITY AS k(colnum, refcolnum, colpos) JOIN pg_catalog.pg_attribute AS a ON a.attrelid = con.conrelid AND a.attnum = k.colnum JOIN pg_catalog.pg_attribute AS fa ON fa.attrelid = con.confrelid AND fa.attnum = k.refcolnum WHERE con.contype = 'f' AND n.nspname = 'schema' AND c.relname = 'table' ORDER BY con.conname, k.colpos","parse":{"outcome":"throw","value":"Syntax error, unexpected token (, near to 'con.conkey, con.confkey) WITH ORDINALITY AS k(colnum, refcolnum, colpos) JOIN pg_catalog.pg_attribute AS a ON a.attrelid = con.conrelid AND a.attnum = k.colnum JOIN pg_catalog.pg_attribute AS fa ON fa.attrelid = con.confrelid AND fa.attnum = k.refcolnum WHERE con.contype = 'f' AND n.nspname = 'schema' AND c.relname = 'table' ORDER BY con.conname, k.colpos', when parsing: SELECT c.relname AS TABLE_NAME, a.attname AS COLUMN_NAME, con.conname AS CONSTRAINT_NAME, current_database() AS REFERENCED_TABLE_SCHEMA, fc.relname AS REFERENCED_TABLE_NAME, fa.attname AS REFERENCED_COLUMN_NAME, CASE con.confupdtype WHEN 'c' THEN 'CASCADE' WHEN 'n' THEN 'SET NULL' WHEN 'd' THEN 'SET DEFAULT' WHEN 'r' THEN 'RESTRICT' WHEN 'a' THEN 'NO ACTION' END AS UPDATE_RULE, CASE con.confdeltype WHEN 'c' THEN 'CASCADE' WHEN 'n' THEN 'SET NULL' WHEN 'd' THEN 'SET DEFAULT' WHEN 'r' THEN 'RESTRICT' WHEN 'a' THEN 'NO ACTION' END AS DELETE_RULE FROM pg_catalog.pg_constraint AS con JOIN pg_catalog.pg_class AS c ON c.oid = con.conrelid JOIN pg_catalog.pg_namespace AS n ON n.oid = c.relnamespace JOIN pg_catalog.pg_class AS fc ON fc.oid = con.confrelid CROSS JOIN LATERAL unnest(con.conkey, con.confkey) WITH ORDINALITY AS k(colnum, refcolnum, colpos) JOIN pg_catalog.pg_attribute AS a ON a.attrelid = con.conrelid AND a.attnum = k.colnum JOIN pg_catalog.pg_attribute AS fa ON fa.attrelid = con.confrelid AND fa.attnum = k.refcolnum WHERE con.contype = 'f' AND n.nspname = 'schema' AND c.relname = 'table' ORDER BY con.conname, k.colpos (1140)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "phalcon:database/Db/Dialect/DescribeReferencesTest#2": {"source":"SELECT c.relname AS TABLE_NAME, a.attname AS COLUMN_NAME, con.conname AS CONSTRAINT_NAME, current_database() AS REFERENCED_TABLE_SCHEMA, fc.relname AS REFERENCED_TABLE_NAME, fa.attname AS REFERENCED_COLUMN_NAME, CASE con.confupdtype WHEN 'c' THEN 'CASCADE' WHEN 'n' THEN 'SET NULL' WHEN 'd' THEN 'SET DEFAULT' WHEN 'r' THEN 'RESTRICT' WHEN 'a' THEN 'NO ACTION' END AS UPDATE_RULE, CASE con.confdeltype WHEN 'c' THEN 'CASCADE' WHEN 'n' THEN 'SET NULL' WHEN 'd' THEN 'SET DEFAULT' WHEN 'r' THEN 'RESTRICT' WHEN 'a' THEN 'NO ACTION' END AS DELETE_RULE FROM pg_catalog.pg_constraint AS con JOIN pg_catalog.pg_class AS c ON c.oid = con.conrelid JOIN pg_catalog.pg_namespace AS n ON n.oid = c.relnamespace JOIN pg_catalog.pg_class AS fc ON fc.oid = con.confrelid CROSS JOIN LATERAL unnest(con.conkey, con.confkey) WITH ORDINALITY AS k(colnum, refcolnum, colpos) JOIN pg_catalog.pg_attribute AS a ON a.attrelid = con.conrelid AND a.attnum = k.colnum JOIN pg_catalog.pg_attribute AS fa ON fa.attrelid = con.confrelid AND fa.attnum = k.refcolnum WHERE con.contype = 'f' AND n.nspname = 'public' AND c.relname = 'table' ORDER BY con.conname, k.colpos","parse":{"outcome":"throw","value":"Syntax error, unexpected token (, near to 'con.conkey, con.confkey) WITH ORDINALITY AS k(colnum, refcolnum, colpos) JOIN pg_catalog.pg_attribute AS a ON a.attrelid = con.conrelid AND a.attnum = k.colnum JOIN pg_catalog.pg_attribute AS fa ON fa.attrelid = con.confrelid AND fa.attnum = k.refcolnum WHERE con.contype = 'f' AND n.nspname = 'public' AND c.relname = 'table' ORDER BY con.conname, k.colpos', when parsing: SELECT c.relname AS TABLE_NAME, a.attname AS COLUMN_NAME, con.conname AS CONSTRAINT_NAME, current_database() AS REFERENCED_TABLE_SCHEMA, fc.relname AS REFERENCED_TABLE_NAME, fa.attname AS REFERENCED_COLUMN_NAME, CASE con.confupdtype WHEN 'c' THEN 'CASCADE' WHEN 'n' THEN 'SET NULL' WHEN 'd' THEN 'SET DEFAULT' WHEN 'r' THEN 'RESTRICT' WHEN 'a' THEN 'NO ACTION' END AS UPDATE_RULE, CASE con.confdeltype WHEN 'c' THEN 'CASCADE' WHEN 'n' THEN 'SET NULL' WHEN 'd' THEN 'SET DEFAULT' WHEN 'r' THEN 'RESTRICT' WHEN 'a' THEN 'NO ACTION' END AS DELETE_RULE FROM pg_catalog.pg_constraint AS con JOIN pg_catalog.pg_class AS c ON c.oid = con.conrelid JOIN pg_catalog.pg_namespace AS n ON n.oid = c.relnamespace JOIN pg_catalog.pg_class AS fc ON fc.oid = con.confrelid CROSS JOIN LATERAL unnest(con.conkey, con.confkey) WITH ORDINALITY AS k(colnum, refcolnum, colpos) JOIN pg_catalog.pg_attribute AS a ON a.attrelid = con.conrelid AND a.attnum = k.colnum JOIN pg_catalog.pg_attribute AS fa ON fa.attrelid = con.confrelid AND fa.attnum = k.refcolnum WHERE con.contype = 'f' AND n.nspname = 'public' AND c.relname = 'table' ORDER BY con.conname, k.colpos (1140)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "phql:ParserTest#1": {"source":"SELECT 1.5 FROM Invoices","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":259,"value":"1.5"}}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "phql:ParserTest#2": {"source":"SELECT FALSE FROM Invoices","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":335}}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "phql:ParserTest#3": {"source":"SELECT 0xFF FROM Invoices","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":414,"value":"0xFF"}}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "phql:ParserTest#4": {"source":"SELECT 1 FROM Invoices","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":258,"value":"1"}}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "phql:ParserTest#5": {"source":"SELECT 'hello' FROM Invoices","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":260,"value":"hello"}}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "phql:ParserTest#6": {"source":"SELECT TRUE FROM Invoices","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":334}}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "phql:ParserTest#7": {"source":"SELECT FROM Robots","parse":{"outcome":"throw","value":"Syntax error, unexpected token FROM, near to ' Robots', when parsing: SELECT FROM Robots (18)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected token FROM, near to ' Robots', when parsing: SELECT FROM Robots (18)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "phql:ParserTest#8": {"source":"SELECT * FROM Robots WHERE (((","parse":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "phql:ParserTest#9": {"source":"SELECT : FROM Invoices","parse":{"outcome":"throw","value":"Scanner: Unknown opcode 58","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Scanner: Unknown opcode 58","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "phql:Phql/Select/AggregateTest#1": {"source":"SELECT AVG(inv_total) AS average FROM [Phalcon\\Tests\\Models\\Invoices]","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":350,"name":"AVG","arguments":[{"type":355,"name":"inv_total"}]},"alias":"average"}],"tables":{"qualifiedName":{"type":355,"name":"Phalcon\\Tests\\Models\\Invoices"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":350,"name":"AVG","arguments":[{"type":355,"name":"inv_total"}]},"alias":"average"}],"tables":{"qualifiedName":{"type":355,"name":"Phalcon\\Tests\\Models\\Invoices"}}}}}}, + "phql:Phql/Select/BetweenTest#1": {"source":"SELECT column_name FROM table_name WHERE column_name BETWEEN value1 AND value2","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"column_name"}}],"tables":{"qualifiedName":{"type":355,"name":"table_name"}}},"where":{"type":331,"left":{"type":355,"name":"column_name"},"right":{"type":266,"left":{"type":355,"name":"value1"},"right":{"type":355,"name":"value2"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"column_name"}}],"tables":{"qualifiedName":{"type":355,"name":"table_name"}}},"where":{"type":331,"left":{"type":355,"name":"column_name"},"right":{"type":266,"left":{"type":355,"name":"value1"},"right":{"type":355,"name":"value2"}}}}}}, + "phql:Phql/Select/BetweenTest#2": {"source":"SELECT Id, ProductName, UnitPrice FROM Product WHERE UnitPrice NOT BETWEEN 5 AND 100","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"Id"}},{"type":354,"column":{"type":355,"name":"ProductName"}},{"type":354,"column":{"type":355,"name":"UnitPrice"}}],"tables":{"qualifiedName":{"type":355,"name":"Product"}}},"where":{"type":332,"left":{"type":355,"name":"UnitPrice"},"right":{"type":266,"left":{"type":258,"value":"5"},"right":{"type":258,"value":"100"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "phql:Phql/Select/BracketsWithSpaceNameTest#1": {"source":"SELECT People.firstName AS [First Name], People.lastName AS [Last Name] FROM People","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"domain":"People","name":"firstName"},"alias":"First Name"},{"type":354,"column":{"type":355,"domain":"People","name":"lastName"},"alias":"Last Name"}],"tables":{"qualifiedName":{"type":355,"name":"People"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"domain":"People","name":"firstName"},"alias":"First Name"},{"type":354,"column":{"type":355,"domain":"People","name":"lastName"},"alias":"Last Name"}],"tables":{"qualifiedName":{"type":355,"name":"People"}}}}}}, + "phql:Phql/Select/CustomOperatorsTest#1": {"source":"SELECT * FROM Invoices WHERE inv_title || 'a' = 'b'","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}},"where":{"type":61,"left":{"type":405,"left":{"type":355,"name":"inv_title"},"right":{"type":260,"value":"a"}},"right":{"type":260,"value":"b"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "phql:Phql/Select/CustomOperatorsTest#2": {"source":"SELECT * FROM Invoices WHERE inv_title ","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}},"where":{"type":355,"name":"inv_title"}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}},"where":{"type":355,"name":"inv_title"}}}}, + "phql:Phql/Select/CustomOperatorsTest#3": {"source":"SELECT inv_meta -> 'currency' AS currency FROM Invoices","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":406,"left":{"type":355,"name":"inv_meta"},"right":{"type":260,"value":"currency"}},"alias":"currency"}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "phql:Phql/Select/CustomOperatorsTest#4": {"source":"SELECT * FROM Invoices WHERE inv_title ->> 'a' = 'b'","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"}}},"where":{"type":61,"left":{"type":416,"left":{"type":355,"name":"inv_title"},"right":{"type":260,"value":"a"}},"right":{"type":260,"value":"b"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "phql:Phql/Select/JoinTest#1": {"source":"SELECT i.inv_id, Customers.name FROM Invoices AS i INNER JOIN Customers ON i.inv_cst_id = Customers.id","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"domain":"i","name":"inv_id"}},{"type":354,"column":{"type":355,"domain":"Customers","name":"name"}}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"},"alias":"i"},"joins":{"type":360,"qualified":{"type":355,"name":"Customers"},"conditions":{"type":61,"left":{"type":355,"domain":"i","name":"inv_cst_id"},"right":{"type":355,"domain":"Customers","name":"id"}}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"domain":"i","name":"inv_id"}},{"type":354,"column":{"type":355,"domain":"Customers","name":"name"}}],"tables":{"qualifiedName":{"type":355,"name":"Invoices"},"alias":"i"},"joins":{"type":360,"qualified":{"type":355,"name":"Customers"},"conditions":{"type":61,"left":{"type":355,"domain":"i","name":"inv_cst_id"},"right":{"type":355,"domain":"Customers","name":"id"}}}}}}}, + "phql:Phql/Select/LimitTest#1": {"source":"SELECT r.* FROM Robots r LIMIT 10","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":353,"column":"r"}],"tables":{"qualifiedName":{"type":355,"name":"Robots"},"alias":"r"}},"limit":{"number":{"type":258,"value":"10"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}} + } +} diff --git a/tests/fixtures/parity/harvested.php b/tests/fixtures/parity/harvested.php new file mode 100644 index 0000000..53e6d3e --- /dev/null +++ b/tests/fixtures/parity/harvested.php @@ -0,0 +1,720 @@ + 'INSERT INTO robots (name, type, year) VALUES (:name, :type, :year)', + 'cphalcon:benchmarks/Db/PdoBench#1' => 'SELECT id, name, type, year FROM robots ORDER BY id LIMIT 20', + 'cphalcon:benchmarks/Db/PdoBench#2' => 'SELECT name FROM robots WHERE id = :id', + 'cphalcon:benchmarks/Mvc/ModelBench#1' => 'SELECT robot.*, copy.* FROM ', + 'cphalcon:benchmarks/Mvc/QueryBench#1' => 'SELECT r.id, r.name FROM ', + 'cphalcon:benchmarks/Mvc/RouterBench#1' => 'update', + 'cphalcon:benchmarks/Mvc/RouterBench#2' => 'delete', + 'cphalcon:database/DataMapper/Pdo/Connection/AutoReconnectTest#1' => 'SELECT 1', + 'cphalcon:database/DataMapper/Pdo/Connection/AutoReconnectTest#2' => 'SELECT CONNECTION_ID()', + 'cphalcon:database/DataMapper/Pdo/Connection/AutoReconnectTest#3' => 'SELECT pg_backend_pid()', + 'cphalcon:database/DataMapper/Pdo/Connection/AutoReconnectTest#4' => 'SELECT pg_terminate_backend(', + 'cphalcon:database/DataMapper/Pdo/Connection/CommitInTransactionRollBackTest#1' => 'insert into co_invoices (inv_id, inv_cst_id, inv_status_flag, inv_title, inv_total, inv_created_at) values (', + 'cphalcon:database/DataMapper/Pdo/Connection/CommitInTransactionRollBackTest#2' => 'select * from co_invoices WHERE inv_id = ?', + 'cphalcon:database/DataMapper/Pdo/Connection/EventsQueryTest#1' => 'delete from co_invoices', + 'cphalcon:database/DataMapper/Pdo/Connection/EventsQueryTest#2' => 'update co_invoices set inv_total = inv_total + 100', + 'cphalcon:database/DataMapper/Pdo/Connection/EventsQueryTest#3' => 'select * from co_invoices', + 'cphalcon:database/DataMapper/Pdo/Connection/EventsQueryTest#4' => 'select * from co_invoices where inv_id = ?', + 'cphalcon:database/DataMapper/Pdo/Connection/FetchAllTest#1' => 'SELECT * from co_invoices', + 'cphalcon:database/DataMapper/Pdo/Connection/FetchGroupTest#1' => 'SELECT inv_status_flag, inv_id, inv_total from co_invoices', + 'cphalcon:database/DataMapper/Pdo/Connection/FetchObjectTest#1' => 'select inv_id, inv_total from co_invoices WHERE inv_id = ?', + 'cphalcon:database/DataMapper/Pdo/Connection/FetchOneTest#1' => 'select * from co_invoices WHERE ', + 'cphalcon:database/DataMapper/Pdo/Connection/FetchPairsTest#1' => 'SELECT inv_id, inv_total from co_invoices', + 'cphalcon:database/DataMapper/Pdo/Connection/FetchValueTest#1' => 'select inv_total from co_invoices WHERE inv_cst_id = ?', + 'cphalcon:database/DataMapper/Pdo/Connection/LastInsertIdTest#1' => 'insert into co_invoices (inv_cst_id, inv_status_flag, inv_title, inv_total, inv_created_at) values (1, 1, \'%title%\', %total%, \'%now%\')', + 'cphalcon:database/DataMapper/Pdo/Connection/LastInsertIdTest#2' => 'select inv_id from co_invoices where inv_title = \'', + 'cphalcon:database/DataMapper/Pdo/Connection/QueryTest#1' => 'select * from co_invoices WHERE inv_id = 1', + 'cphalcon:database/DataMapper/Pdo/Profiler/MemoryLogger/LogTest#1' => 'select', + 'cphalcon:database/DataMapper/Pdo/Profiler/Profiler/StartFinishTest#1' => 'select from something', + 'cphalcon:database/DataMapper/Pdo/Profiler/Profiler/StartFinishTest#2' => 'select from something #0', + 'cphalcon:database/DataMapper/Query/Delete/GetStatementTest#1' => 'DELETE FROM co_invoices WHERE inv_total > :total AND inv_cst_id = :cstId OR inv_status_flag = :flag RETURNING inv_total, inv_cst_id, inv_status_flag', + 'cphalcon:database/DataMapper/Query/Insert/GetLastInsertIdTest#1' => 'SELECT inv_id FROM co_invoices WHERE inv_title = \'', + 'cphalcon:database/DataMapper/Query/Insert/GetStatementTest#1' => 'INSERT INTO co_invoices (%1$sinv_cst_id%2$s, %1$sinv_total%2$s, %1$sinv_id%2$s, %1$sinv_status_flag%2$s, %1$sinv_created_date%2$s) VALUES (:inv_cst_id, :inv_total, NULL, 1, NOW()) RETURNING inv_id, inv_cst_id, inv_total', + 'cphalcon:database/DataMapper/Query/Select/ColumnsTest#1' => 'SELECT inv_id, inv_cst_id, COUNT(inv_total) FROM co_invoices', + 'cphalcon:database/DataMapper/Query/Select/DistinctTest#1' => 'SELECT DISTINCT inv_id, inc_cst_id FROM co_invoices', + 'cphalcon:database/DataMapper/Query/Select/DistinctTest#2' => 'SELECT inv_id, inc_cst_id FROM co_invoices', + 'cphalcon:database/DataMapper/Query/Select/ForUpdateTest#1' => 'SELECT * FROM co_invoices FOR UPDATE', + 'cphalcon:database/DataMapper/Query/Select/ForUpdateTest#2' => 'SELECT * FROM co_invoices', + 'cphalcon:database/DataMapper/Query/Select/FromTest#1' => 'SELECT * FROM co_invoices, co_customers', + 'cphalcon:database/DataMapper/Query/Select/FromTest#2' => 'SELECT *', + 'cphalcon:database/DataMapper/Query/Select/GroupByTest#1' => 'SELECT * FROM co_invoices GROUP BY inv_cst_id, inv_status_flag', + 'cphalcon:database/DataMapper/Query/Select/HavingTest#1' => 'SELECT * FROM co_invoices HAVING inv_total = :total', + 'cphalcon:database/DataMapper/Query/Select/HavingTest#2' => 'SELECT * FROM co_invoices HAVING inv_total = :total AND inv_cst_id = 1 OR (inv_status_flag = 0 OR inv_status_flag = 1)', + 'cphalcon:database/DataMapper/Query/Select/JoinTest#1' => 'SELECT * FROM co_invoices INNER JOIN co_customers ON inv_cst_id = cst_id', + 'cphalcon:database/DataMapper/Query/Select/JoinTest#2' => 'SELECT * FROM co_invoices LEFT JOIN co_customers ON inv_cst_id = cst_id', + 'cphalcon:database/DataMapper/Query/Select/JoinTest#3' => 'SELECT * FROM co_invoices NATURAL JOIN co_customers ON inv_cst_id = cst_id', + 'cphalcon:database/DataMapper/Query/Select/JoinTest#4' => 'SELECT * FROM co_invoices RIGHT JOIN co_customers ON inv_cst_id = cst_id', + 'cphalcon:database/DataMapper/Query/Select/JoinTest#5' => 'SELECT * FROM co_invoices LEFT JOIN co_customers ON inv_cst_id = cst_id AND cst_status_flag = :__1__ AND cst_name LIKE :__2__', + 'cphalcon:database/DataMapper/Query/Select/LimitOffsetTest#1' => 'SELECT * FROM co_invoices LIMIT 10', + 'cphalcon:database/DataMapper/Query/Select/LimitOffsetTest#2' => 'SELECT * FROM co_invoices LIMIT 10 OFFSET 50', + 'cphalcon:database/DataMapper/Query/Select/LimitOffsetTest#3' => 'SELECT TOP 10 * FROM co_invoices', + 'cphalcon:database/DataMapper/Query/Select/LimitOffsetTest#4' => 'SELECT * FROM co_invoices OFFSET 50 ROWS FETCH NEXT 10 ROWS ONLY', + 'cphalcon:database/DataMapper/Query/Select/OrderByTest#1' => 'SELECT * FROM co_invoices ORDER BY inv_cst_id, UPPER(inv_title)', + 'cphalcon:database/DataMapper/Query/Select/SetFlagTest#1' => 'SELECT LOW_PRIORITY * FROM co_invoices', + 'cphalcon:database/DataMapper/Query/Select/SubSelectTest#1' => 'SELECT * FROM (SELECT inv_id FROM co_invoices) AS inv', + 'cphalcon:database/DataMapper/Query/Select/UnionAllTest#1' => 'SELECT * FROM co_invoices WHERE inv_id = 1 UNION ALL SELECT * FROM co_invoices WHERE inv_id = 2 UNION ALL SELECT * FROM co_invoices WHERE inv_id = 3', + 'cphalcon:database/DataMapper/Query/Select/UnionTest#1' => 'SELECT * FROM co_invoices WHERE inv_id = 1 UNION SELECT * FROM co_invoices WHERE inv_id = 2 UNION SELECT * FROM co_invoices WHERE inv_id = 3', + 'cphalcon:database/DataMapper/Query/Select/WhereEqualsTest#1' => 'SELECT * FROM co_invoices WHERE inv_id IN (:__1__, :__2__, :__3__) AND inv_cst_id IS NULL AND inv_title = :__4__ AND inv_created_at = NOW()', + 'cphalcon:database/DataMapper/Query/Select/WhereTest#1' => 'SELECT * FROM co_invoices WHERE inv_total > :__1__ OR inv_status_flag = :status', + 'cphalcon:database/DataMapper/Query/Select/WhereTest#2' => 'SELECT * FROM co_invoices WHERE inv_id > :__1__', + 'cphalcon:database/DataMapper/Query/Select/WhereTest#3' => 'SELECT * FROM co_invoices WHERE inv_id > 1 AND inv_total > :total AND inv_cst_id IN (:__1__, :__2__, :__3__) AND inv_status_flag = :__4__', + 'cphalcon:database/DataMapper/Query/Update/GetStatementTest#1' => 'UPDATE co_invoices SET %1$sinv_id%2$s = :inv_id, %1$sinv_cst_id%2$s = :inv_cst_id, %1$sinv_total%2$s = :inv_total, %1$sinv_status_flag%2$s = NULL, %1$sinv_created_date%2$s = NOW() WHERE inv_total > :totalMax AND inv_cst_id = :cstId OR inv_status_flag = :flag', + 'cphalcon:database/DataMapper/Query/Update/GetStatementTest#2' => 'UPDATE co_invoices SET %1$sinv_id%2$s = :inv_id, %1$sinv_cst_id%2$s = :inv_cst_id, %1$sinv_total%2$s = :inv_total, %1$sinv_status_flag%2$s = NULL, %1$sinv_created_date%2$s = NOW() WHERE inv_total > :totalMax AND inv_cst_id = :cstId OR inv_status_flag = :flag RETURNING inv_id, inv_cst_id, inv_total', + 'cphalcon:database/Db/Adapter/Pdo/AutoReconnectTest#1' => 'SELECT 1 AS num', + 'cphalcon:database/Db/Adapter/Pdo/CommitTest#1' => 'SELECT inv_title FROM co_invoices WHERE inv_title = ?', + 'cphalcon:database/Db/Adapter/Pdo/ConnectTest#1' => 'SELECT 1 AS one', + 'cphalcon:database/Db/Adapter/Pdo/ConvertBoundParamsTest#1' => 'SELECT * FROM co_invoices WHERE inv_id = ?0 AND inv_title = ?1', + 'cphalcon:database/Db/Adapter/Pdo/CreateViewTest#1' => 'SELECT id, name FROM ', + 'cphalcon:database/Db/Adapter/Pdo/EscapeStringTest#1' => 'SELECT ', + 'cphalcon:database/Db/Adapter/Pdo/ExecInsertTest#1' => 'insert into co_dialect ( + field_primary, + field_blob, + field_binary, + field_bit, + field_bigint, + field_boolean, + field_char, + field_decimal, + field_enum, + field_integer, + field_json, + field_float, + field_date, + field_datetime, + field_time, + field_timestamp, + field_mediumint, + field_smallint, + field_tinyint, + field_longtext, + field_mediumtext, + field_tinytext, + field_text, + field_varbinary, + field_varchar +) values ( + ?, + ?, + ?, + ?, + ?, + ?, + ?, + ?, + ?, + ?, + ?, + ?, + ?, + ?, + ?, + ?, + ?, + ?, + ?, + ?, + ?, + ?, + ?, + ?, + ? +)', + 'cphalcon:database/Db/Adapter/Pdo/ExecutePreparedTest#1' => 'SELECT inv_title FROM co_invoices WHERE inv_id = ?', + 'cphalcon:database/Db/Adapter/Pdo/ExecuteTest#1' => 'DELETE FROM co_invoices', + 'cphalcon:database/Db/Adapter/Pdo/ExecuteTest#2' => 'SELECT COUNT(*) FROM co_invoices', + 'cphalcon:database/Db/Adapter/Pdo/FetchAllTest#1' => 'SELECT inv_id, inv_title FROM co_invoices ORDER BY inv_id', + 'cphalcon:database/Db/Adapter/Pdo/FetchColumnTest#1' => 'SELECT inv_id, inv_title FROM co_invoices WHERE inv_id = ?', + 'cphalcon:database/Db/Adapter/Pdo/FetchOneTest#1' => 'SELECT inv_id FROM co_invoices WHERE inv_id = ?', + 'cphalcon:database/Db/Adapter/Pdo/ForUpdateTest#1' => 'SELECT 1 FOR UPDATE', + 'cphalcon:database/Db/Adapter/Pdo/GetErrorInfoTest#1' => 'SELECT * FROM definitely_not_a_real_table_zzz', + 'cphalcon:database/Db/Adapter/Pdo/GetRealSQLStatementTest#1' => 'SELECT inv_id FROM co_invoices', + 'cphalcon:database/Db/Adapter/Pdo/InsertAsDictTest#1' => 'SELECT inv_cst_id, inv_status_flag, inv_title, inv_total FROM co_invoices WHERE inv_title = ?', + 'cphalcon:database/Db/Adapter/Pdo/InsertTest#1' => 'Insert test', + 'cphalcon:database/Db/Adapter/Pdo/LimitTest#1' => 'SELECT 1 LIMIT 10', + 'cphalcon:database/Db/Adapter/Pdo/MysqlTest#1' => 'SELECT CONSTRAINT_NAME FROM information_schema.KEY_COLUMN_USAGE + WHERE TABLE_SCHEMA = DATABASE() + AND TABLE_NAME = \'', + 'cphalcon:database/Db/Adapter/Pdo/Postgresql/QueryTest#1' => 'SELECT * FROM co_invoices LIMIT 3', + 'cphalcon:database/Db/Adapter/Pdo/Postgresql/QueryTest#2' => 'SELECT * FROM co_invoices LIMIT 5', + 'cphalcon:database/Db/Adapter/Pdo/QueryTest#1' => 'SELECT inv_id FROM co_invoices LIMIT 5', + 'cphalcon:database/Db/Adapter/Pdo/SharedLockTest#1' => 'SELECT 1 LOCK IN SHARE MODE', + 'cphalcon:database/Db/Adapter/Pdo/SharedLockTest#2' => 'SELECT 1 FOR SHARE', + 'cphalcon:database/Db/Adapter/Pdo/UpdateAsDictTest#1' => 'SELECT inv_title, inv_status_flag FROM co_invoices WHERE inv_id = ?', + 'cphalcon:database/Db/DbBindTest#1' => 'INSERT INTO co_invoices(inv_id, inv_cst_id, inv_status_flag, inv_title, inv_total) VALUES (', + 'cphalcon:database/Db/DbBindTest#2' => 'UPDATE co_invoices SET inv_title = ?, inv_status_flag = ?', + 'cphalcon:database/Db/DbBindTest#3' => 'DELETE FROM co_invoices WHERE inv_status_flag = ?', + 'cphalcon:database/Db/DbTest#1' => 'SELECT COUNT(*) AS cnt FROM co_invoices WHERE inv_title = ? AND inv_status_flag = ?', + 'cphalcon:database/Db/DbTest#2' => 'SELECT inv_id FROM co_invoices ORDER BY inv_id DESC', + 'cphalcon:database/Db/DbTest#3' => 'SELECT * FROM co_invoices WHERE inv_id = ?', + 'cphalcon:database/Db/DbTest#4' => 'INSERT INTO co_invoices(inv_id, inv_cst_id, inv_status_flag, inv_title) VALUES (', + 'cphalcon:database/Db/DbTest#5' => 'SELECT 1 AS one, 2 AS two, 3 AS three', + 'cphalcon:database/Db/DbTest#6' => 'SELECT * FROM phalcon_test_view', + 'cphalcon:database/Db/Dialect/AddForeignKeyTest#1' => 'delete command', + 'cphalcon:database/Db/Dialect/AddForeignKeyTest#2' => 'update command', + 'cphalcon:database/Db/Dialect/DescribeColumnsTest#1' => 'SELECT COLUMN_NAME AS `Field`, COLUMN_TYPE AS `Type`, COLLATION_NAME AS `Collation`, IS_NULLABLE AS `Null`, COLUMN_KEY AS `Key`, COLUMN_DEFAULT AS `Default`, EXTRA AS `Extra`, PRIVILEGES AS `Privileges`, COLUMN_COMMENT AS `Comment`, GENERATION_EXPRESSION AS `GenerationExpression` FROM `INFORMATION_SCHEMA`.`COLUMNS` ', + 'cphalcon:database/Db/Dialect/DescribeColumnsTest#2' => 'SELECT DISTINCT c.column_name AS Field, c.data_type AS Type, c.character_maximum_length AS Size, c.numeric_precision AS NumericSize, c.numeric_scale AS NumericScale, c.is_nullable AS Null, CASE WHEN pkc.column_name NOTNULL THEN \'PRI\' ELSE \'\' END AS Key, CASE WHEN c.data_type LIKE \'%int%\' AND c.column_default LIKE \'%nextval%\' THEN \'auto_increment\' ELSE \'\' END AS Extra, c.ordinal_position AS Position, c.column_default, des.description, c.is_generated AS IsGenerated, c.generation_expression AS GenerationExpression FROM information_schema.columns c LEFT JOIN ( SELECT kcu.column_name, kcu.table_name, kcu.table_schema FROM information_schema.table_constraints tc INNER JOIN information_schema.key_column_usage kcu on (kcu.constraint_name = tc.constraint_name and kcu.table_name=tc.table_name and kcu.table_schema=tc.table_schema) WHERE tc.constraint_type=\'PRIMARY KEY\') pkc ON (c.column_name=pkc.column_name AND c.table_schema = pkc.table_schema AND c.table_name=pkc.table_name) LEFT JOIN ( SELECT objsubid, description, relname, nspname FROM pg_description JOIN pg_class ON pg_description.objoid = pg_class.oid JOIN pg_namespace ON pg_class.relnamespace = pg_namespace.oid ) des ON ( des.objsubid = C.ordinal_position AND C.table_schema = des.nspname AND C.TABLE_NAME = des.relname ) ', + 'cphalcon:database/Db/Dialect/DescribeReferencesTest#1' => 'SELECT DISTINCT KCU.TABLE_NAME, KCU.COLUMN_NAME, KCU.CONSTRAINT_NAME, KCU.REFERENCED_TABLE_SCHEMA, KCU.REFERENCED_TABLE_NAME, KCU.REFERENCED_COLUMN_NAME, RC.UPDATE_RULE, RC.DELETE_RULE FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE AS KCU LEFT JOIN INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS AS RC ON RC.CONSTRAINT_NAME = KCU.CONSTRAINT_NAME AND RC.CONSTRAINT_SCHEMA = KCU.CONSTRAINT_SCHEMA WHERE KCU.REFERENCED_TABLE_NAME IS NOT NULL AND KCU.CONSTRAINT_SCHEMA = \'schema\' AND KCU.TABLE_NAME = \'table\'', + 'cphalcon:database/Db/Dialect/DescribeReferencesTest#2' => 'SELECT DISTINCT tc.table_name AS TABLE_NAME, kcu.column_name AS COLUMN_NAME, tc.constraint_name AS CONSTRAINT_NAME, tc.table_catalog AS REFERENCED_TABLE_SCHEMA, ccu.table_name AS REFERENCED_TABLE_NAME, ccu.column_name AS REFERENCED_COLUMN_NAME, rc.update_rule AS UPDATE_RULE, rc.delete_rule AS DELETE_RULE FROM information_schema.table_constraints AS tc JOIN information_schema.key_column_usage AS kcu ON tc.constraint_name = kcu.constraint_name JOIN information_schema.constraint_column_usage AS ccu ON ccu.constraint_name = tc.constraint_name JOIN information_schema.referential_constraints rc ON tc.constraint_catalog = rc.constraint_catalog AND tc.constraint_schema = rc.constraint_schema AND tc.constraint_name = rc.constraint_name AND tc.constraint_type = \'FOREIGN KEY\' WHERE constraint_type = \'FOREIGN KEY\' AND tc.table_schema = \'schema\' AND tc.table_name=\'table\'', + 'cphalcon:database/Db/Dialect/DescribeReferencesTest#3' => 'SELECT DISTINCT KCU.TABLE_NAME, KCU.COLUMN_NAME, KCU.CONSTRAINT_NAME, KCU.REFERENCED_TABLE_SCHEMA, KCU.REFERENCED_TABLE_NAME, KCU.REFERENCED_COLUMN_NAME, RC.UPDATE_RULE, RC.DELETE_RULE FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE AS KCU LEFT JOIN INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS AS RC ON RC.CONSTRAINT_NAME = KCU.CONSTRAINT_NAME AND RC.CONSTRAINT_SCHEMA = KCU.CONSTRAINT_SCHEMA WHERE KCU.REFERENCED_TABLE_NAME IS NOT NULL AND KCU.CONSTRAINT_SCHEMA = DATABASE() AND KCU.TABLE_NAME = \'table\'', + 'cphalcon:database/Db/Dialect/DescribeReferencesTest#4' => 'SELECT DISTINCT tc.table_name AS TABLE_NAME, kcu.column_name AS COLUMN_NAME, tc.constraint_name AS CONSTRAINT_NAME, tc.table_catalog AS REFERENCED_TABLE_SCHEMA, ccu.table_name AS REFERENCED_TABLE_NAME, ccu.column_name AS REFERENCED_COLUMN_NAME, rc.update_rule AS UPDATE_RULE, rc.delete_rule AS DELETE_RULE FROM information_schema.table_constraints AS tc JOIN information_schema.key_column_usage AS kcu ON tc.constraint_name = kcu.constraint_name JOIN information_schema.constraint_column_usage AS ccu ON ccu.constraint_name = tc.constraint_name JOIN information_schema.referential_constraints rc ON tc.constraint_catalog = rc.constraint_catalog AND tc.constraint_schema = rc.constraint_schema AND tc.constraint_name = rc.constraint_name AND tc.constraint_type = \'FOREIGN KEY\' WHERE constraint_type = \'FOREIGN KEY\' AND tc.table_schema = \'public\' AND tc.table_name=\'table\'', + 'cphalcon:database/Db/Dialect/ForUpdateModifierTest#1' => 'SELECT * FROM robots', + 'cphalcon:database/Db/Dialect/ListViewsTest#1' => 'SELECT `TABLE_NAME` AS view_name FROM `INFORMATION_SCHEMA`.`VIEWS` WHERE `TABLE_SCHEMA` = \'schema\' ORDER BY view_name', + 'cphalcon:database/Db/Dialect/ListViewsTest#2' => 'SELECT viewname AS view_name FROM pg_views WHERE schemaname = \'schema\' ORDER BY view_name', + 'cphalcon:database/Db/Dialect/ListViewsTest#3' => 'SELECT tbl_name FROM sqlite_master WHERE type = \'view\' ORDER BY tbl_name', + 'cphalcon:database/Db/Dialect/ListViewsTest#4' => 'SELECT `TABLE_NAME` AS view_name FROM `INFORMATION_SCHEMA`.`VIEWS` WHERE `TABLE_SCHEMA` = DATABASE() ORDER BY view_name', + 'cphalcon:database/Db/Dialect/ListViewsTest#5' => 'SELECT viewname AS view_name FROM pg_views WHERE schemaname = \'public\' ORDER BY view_name', + 'cphalcon:database/Db/Dialect/MaterializedViewTest#1' => 'SELECT * FROM robots ORDER BY score DESC LIMIT 100', + 'cphalcon:database/Db/Dialect/Mysql/ForUpdateTest#1' => 'SELECT * FROM robots FOR UPDATE', + 'cphalcon:database/Db/Dialect/Mysql/GetForeignKeyChecksTest#1' => 'SELECT @@foreign_key_checks', + 'cphalcon:database/Db/Dialect/Mysql/LimitTest#1' => 'SELECT * FROM robots LIMIT 10', + 'cphalcon:database/Db/Dialect/Mysql/LimitTest#2' => 'SELECT * FROM robots LIMIT 10 OFFSET 50', + 'cphalcon:database/Db/Dialect/Mysql/SelectTest#1' => 'SELECT * FROM `robots`', + 'cphalcon:database/Db/Dialect/Mysql/TableOptionsTest#1' => 'SELECT TABLES.TABLE_TYPE AS table_type,TABLES.AUTO_INCREMENT AS auto_increment,TABLES.ENGINE AS engine,TABLES.TABLE_COLLATION AS table_collation,TABLES.TABLE_COMMENT AS table_comment FROM INFORMATION_SCHEMA.TABLES WHERE ', + 'cphalcon:database/Db/Dialect/OnConflictUpdateTest#1' => 'INSERT INTO robots (id) VALUES (1)', + 'cphalcon:database/Db/Dialect/OnConflictUpdateTest#2' => 'INSERT INTO robots (id, name) VALUES (1, \'R2D2\')', + 'cphalcon:database/Db/Dialect/OnConflictUpdateTest#3' => 'INSERT INTO robots (id, name) VALUES (1, \'R2D2\') ON CONFLICT ("id") DO UPDATE SET "name" = excluded."name"', + 'cphalcon:database/Db/Dialect/OnConflictUpdateTest#4' => 'INSERT INTO robots (a, b, c) VALUES (1, 2, 3)', + 'cphalcon:database/Db/Dialect/Postgresql/DescribeIndexesTest#1' => 'SELECT 0 as c0, t.relname as table_name, i.relname as key_name, 3 as c3, a.attname as column_name FROM pg_class t, pg_class i, pg_index ix, pg_attribute a WHERE t.oid = ix.indrelid AND i.oid = ix.indexrelid AND a.attrelid = t.oid AND a.attnum = ANY(ix.indkey) AND t.relkind = \'r\' AND t.relname = \'robots\' ORDER BY t.relname, i.relname;', + 'cphalcon:database/Db/Dialect/Postgresql/ListTablesTest#1' => 'SELECT table_name FROM information_schema.tables WHERE table_schema = \'public\' ORDER BY table_name', + 'cphalcon:database/Db/Dialect/Postgresql/ListTablesTest#2' => 'SELECT table_name FROM information_schema.tables WHERE table_schema = \'myschema\' ORDER BY table_name', + 'cphalcon:database/Db/Dialect/Postgresql/SelectTest#1' => 'SELECT * FROM "robots"', + 'cphalcon:database/Db/Dialect/Postgresql/SharedLockTest#1' => 'SELECT * FROM robots FOR SHARE', + 'cphalcon:database/Db/Dialect/Postgresql/TableOptionsTest#1' => 'SELECT obj_description(c.oid, \'pg_class\') AS table_comment FROM pg_class c JOIN pg_namespace n ON n.oid = c.relnamespace WHERE c.relname = \'robots\' AND ', + 'cphalcon:database/Db/Dialect/ReturningTest#1' => 'INSERT INTO robots (name) VALUES (\'R2D2\')', + 'cphalcon:database/Db/Dialect/ReturningTest#2' => 'INSERT INTO robots (name) VALUES (\'R2D2\') RETURNING "id", "name"', + 'cphalcon:database/Db/Dialect/ReturningTest#3' => 'DELETE FROM robots WHERE id = 1 RETURNING *', + 'cphalcon:database/Db/Dialect/ReturningTest#4' => 'DELETE FROM robots WHERE id = 1', + 'cphalcon:database/Db/Dialect/ReturningTest#5' => 'INSERT INTO robots (name) VALUES (\'R2D2\') RETURNING "id"', + 'cphalcon:database/Db/Dialect/SharedLockModifierTest#1' => 'SELECT * FROM robots FOR SHARE NOWAIT', + 'cphalcon:database/Db/Dialect/SharedLockModifierTest#2' => 'SELECT * FROM robots FOR SHARE SKIP LOCKED', + 'cphalcon:database/Db/Dialect/Sqlite/ListIndexesSqlTest#1' => 'SELECT sql FROM sqlite_master WHERE type = \'index\' AND tbl_name = "robots" COLLATE NOCASE', + 'cphalcon:database/Db/Dialect/Sqlite/ListIndexesSqlTest#2' => 'SELECT sql FROM sqlite_master WHERE type = \'index\' AND tbl_name = "robots" COLLATE NOCASE AND name = "idx_robots_name" COLLATE NOCASE', + 'cphalcon:database/Db/Dialect/Sqlite/ListTablesTest#1' => 'SELECT tbl_name FROM sqlite_master WHERE type = \'table\' ORDER BY tbl_name', + 'cphalcon:database/Db/Dialect/Sqlite/TableExistsTest#1' => 'SELECT CASE WHEN COUNT(*) > 0 THEN 1 ELSE 0 END FROM sqlite_master WHERE type=\'table\' AND tbl_name=\'robots\'', + 'cphalcon:database/Db/Dialect/TableExistsTest#1' => 'SELECT IF(COUNT(*) > 0, 1, 0) FROM `INFORMATION_SCHEMA`.`TABLES` WHERE `TABLE_NAME`= \'table\' AND `TABLE_SCHEMA` = \'schema\'', + 'cphalcon:database/Db/Dialect/TableExistsTest#2' => 'SELECT CASE WHEN COUNT(*) > 0 THEN 1 ELSE 0 END FROM information_schema.tables WHERE table_schema = \'schema\' AND table_name=\'table\'', + 'cphalcon:database/Db/Dialect/TableExistsTest#3' => 'SELECT CASE WHEN COUNT(*) > 0 THEN 1 ELSE 0 END FROM sqlite_master WHERE type=\'table\' AND tbl_name=\'table\'', + 'cphalcon:database/Db/Dialect/TableExistsTest#4' => 'SELECT IF(COUNT(*) > 0, 1, 0) FROM `INFORMATION_SCHEMA`.`TABLES` WHERE `TABLE_NAME` = \'table\' AND `TABLE_SCHEMA` = DATABASE()', + 'cphalcon:database/Db/Dialect/TableExistsTest#5' => 'SELECT CASE WHEN COUNT(*) > 0 THEN 1 ELSE 0 END FROM information_schema.tables WHERE table_schema = \'public\' AND table_name=\'table\'', + 'cphalcon:database/Db/Dialect/TruncateTableTest#1' => 'DELETE FROM "schema"."table"', + 'cphalcon:database/Db/Dialect/TruncateTableTest#2' => 'DELETE FROM "table"', + 'cphalcon:database/Db/Dialect/ViewExistsTest#1' => 'SELECT IF(COUNT(*) > 0, 1, 0) FROM `INFORMATION_SCHEMA`.`VIEWS` WHERE `TABLE_NAME`= \'view\' AND `TABLE_SCHEMA`=\'schema\'', + 'cphalcon:database/Db/Dialect/ViewExistsTest#2' => 'SELECT CASE WHEN COUNT(*) > 0 THEN 1 ELSE 0 END FROM pg_views WHERE viewname=\'view\' AND schemaname=\'schema\'', + 'cphalcon:database/Db/Dialect/ViewExistsTest#3' => 'SELECT CASE WHEN COUNT(*) > 0 THEN 1 ELSE 0 END FROM sqlite_master WHERE type=\'view\' AND tbl_name=\'view\'', + 'cphalcon:database/Db/Dialect/ViewExistsTest#4' => 'SELECT IF(COUNT(*) > 0, 1, 0) FROM `INFORMATION_SCHEMA`.`VIEWS` WHERE `TABLE_NAME`=\'view\' AND `TABLE_SCHEMA` = DATABASE()', + 'cphalcon:database/Db/Dialect/ViewExistsTest#5' => 'SELECT CASE WHEN COUNT(*) > 0 THEN 1 ELSE 0 END FROM pg_views WHERE viewname=\'view\' AND schemaname=\'public\'', + 'cphalcon:database/Db/Profiler/GetLastProfileTest#1' => 'SELECT * FROM co_invoices LIMIT 100', + 'cphalcon:database/Db/Profiler/GetProfilesTest#1' => 'SELECT * FROM robots WHERE id = 1', + 'cphalcon:database/Db/Profiler/ResetTest#1' => 'SELECT * FROM co_invoices LIMIT 15', + 'cphalcon:database/Db/Profiler/StartProfileTest#1' => 'SELECT * FROM robots WHERE id = ?', + 'cphalcon:database/Db/Result/Pdo/DataSeekTest#1' => 'SELECT * FROM co_invoices ORDER BY inv_id', + 'cphalcon:database/Db/Result/Pdo/NumRowsTest#1' => 'SELECT * +FROM co_invoices', + 'cphalcon:database/Db/Result/Pdo/NumRowsTest#2' => 'SELECT COUNT(*) FROM co_invoices GROUP BY inv_cst_id', + 'cphalcon:database/Db/Result/Pdo/NumRowsTest#3' => 'SELECT * FROM co_invoices LIMIT 2', + 'cphalcon:database/Db/Result/Pdo/NumRowsTest#4' => 'SELECT * FROM co_invoices ORDER BY inv_id DESC', + 'cphalcon:database/Db/Result/Pdo/NumRowsTest#5' => 'SELECT * FROM co_invoices WHERE inv_cst_id = 2', + 'cphalcon:database/Db/Result/Pdo/NumRowsTest#6' => 'SELECT * FROM co_invoices WHERE inv_cst_id = :cst_id', + 'cphalcon:database/Forms/Form/ClearTest#1' => 'Insert your Password', + 'cphalcon:database/Mvc/Model/CreateTest#1' => 'SELECT setval(pg_get_serial_sequence(\'co_invoices\', \'inv_id\'), 77)', + 'cphalcon:database/Mvc/Model/Criteria/AndWhereTest#1' => 'SELECT [Phalcon\\Tests\\Support\\Models\\Invoices].* FROM [Phalcon\\Tests\\Support\\Models\\Invoices] WHERE (inv_cst_id = 1) AND (inv_status_flag = :status:)', + 'cphalcon:database/Mvc/Model/Criteria/BetweenWhereTest#1' => 'SELECT [Phalcon\\Tests\\Support\\Models\\Invoices].* FROM [Phalcon\\Tests\\Support\\Models\\Invoices] WHERE inv_cst_id BETWEEN :ACP0: AND :ACP1:', + 'cphalcon:database/Mvc/Model/Criteria/ColumnsTest#1' => 'SELECT inv_id, inv_total FROM [Phalcon\\Tests\\Support\\Models\\Invoices]', + 'cphalcon:database/Mvc/Model/Criteria/ColumnsTest#2' => 'SELECT inv_id AS [id], inv_total AS [total] FROM [Phalcon\\Tests\\Support\\Models\\Invoices]', + 'cphalcon:database/Mvc/Model/Criteria/FromInputTest#1' => 'SELECT [Phalcon\\Tests\\Support\\Models\\Invoices].* FROM [Phalcon\\Tests\\Support\\Models\\Invoices] WHERE [inv_id] = :inv_id: AND [inv_cst_id] = :inv_cst_id: AND [inv_status_flag] = :inv_status_flag: AND [inv_title] = :inv_title: AND [inv_total] = :inv_total: AND [inv_created_at] = :inv_created_at:', + 'cphalcon:database/Mvc/Model/Criteria/FromInputTest#2' => 'SELECT [Phalcon\\Tests\\Support\\Models\\Invoices].* FROM [Phalcon\\Tests\\Support\\Models\\Invoices] WHERE [inv_id] = :inv_id: AND [inv_cst_id] = :inv_cst_id: AND [inv_status_flag] = :inv_status_flag: AND [inv_title] LIKE :inv_title: AND [inv_total] = :inv_total: AND [inv_created_at] = :inv_created_at:', + 'cphalcon:database/Mvc/Model/Criteria/GetConditionsTest#1' => 'SELECT [Phalcon\\Tests\\Support\\Models\\Invoices].* FROM [Phalcon\\Tests\\Support\\Models\\Invoices] WHERE inv_cst_id = 1', + 'cphalcon:database/Mvc/Model/Criteria/GroupByTest#1' => 'SELECT [Phalcon\\Tests\\Support\\Models\\Invoices].* FROM [Phalcon\\Tests\\Support\\Models\\Invoices] GROUP BY [inv_cst_id]', + 'cphalcon:database/Mvc/Model/Criteria/HavingTest#1' => 'SELECT [Phalcon\\Tests\\Support\\Models\\Invoices].* FROM [Phalcon\\Tests\\Support\\Models\\Invoices] HAVING inv_cst_id = 1', + 'cphalcon:database/Mvc/Model/Criteria/InWhereTest#1' => 'SELECT [Phalcon\\Tests\\Support\\Models\\Invoices].* FROM [Phalcon\\Tests\\Support\\Models\\Invoices] WHERE inv_cst_id IN (:ACP0:, :ACP1:)', + 'cphalcon:database/Mvc/Model/Criteria/InnerJoinTest#1' => 'SELECT [Phalcon\\Tests\\Support\\Models\\Invoices].* FROM [Phalcon\\Tests\\Support\\Models\\Invoices] INNER JOIN [Phalcon\\Tests\\Support\\Models\\Customers] AS [customer] ON inv_cst_id = cst_id', + 'cphalcon:database/Mvc/Model/Criteria/JoinTest#1' => 'SELECT [Phalcon\\Tests\\Support\\Models\\Invoices].* FROM [Phalcon\\Tests\\Support\\Models\\Invoices] JOIN [Phalcon\\Tests\\Support\\Models\\Customers] AS [customer] ON inv_cst_id = cst_id', + 'cphalcon:database/Mvc/Model/Criteria/LeftJoinTest#1' => 'SELECT [Phalcon\\Tests\\Support\\Models\\Invoices].* FROM [Phalcon\\Tests\\Support\\Models\\Invoices] LEFT JOIN [Phalcon\\Tests\\Support\\Models\\Customers] AS [customer] ON inv_cst_id = cst_id', + 'cphalcon:database/Mvc/Model/Criteria/LimitTest#1' => 'SELECT [Phalcon\\Tests\\Support\\Models\\Invoices].* FROM [Phalcon\\Tests\\Support\\Models\\Invoices] LIMIT :APL0:', + 'cphalcon:database/Mvc/Model/Criteria/LimitTest#2' => 'SELECT [Phalcon\\Tests\\Support\\Models\\Invoices].* FROM [Phalcon\\Tests\\Support\\Models\\Invoices] LIMIT :APL0: OFFSET :APL1:', + 'cphalcon:database/Mvc/Model/Criteria/LimitTest#3' => 'SELECT [Phalcon\\Tests\\Support\\Models\\Invoices].* FROM [Phalcon\\Tests\\Support\\Models\\Invoices]', + 'cphalcon:database/Mvc/Model/Criteria/NotBetweenWhereTest#1' => 'SELECT [Phalcon\\Tests\\Support\\Models\\Invoices].* FROM [Phalcon\\Tests\\Support\\Models\\Invoices] WHERE inv_cst_id NOT BETWEEN :ACP0: AND :ACP1:', + 'cphalcon:database/Mvc/Model/Criteria/NotInWhereTest#1' => 'SELECT [Phalcon\\Tests\\Support\\Models\\Invoices].* FROM [Phalcon\\Tests\\Support\\Models\\Invoices] WHERE inv_cst_id NOT IN (:ACP0:, :ACP1:)', + 'cphalcon:database/Mvc/Model/Criteria/OrWhereTest#1' => 'SELECT [Phalcon\\Tests\\Support\\Models\\Invoices].* FROM [Phalcon\\Tests\\Support\\Models\\Invoices] WHERE (inv_cst_id = 1) OR (inv_status_flag = :status:)', + 'cphalcon:database/Mvc/Model/Criteria/OrderByTest#1' => 'SELECT [Phalcon\\Tests\\Support\\Models\\Invoices].* FROM [Phalcon\\Tests\\Support\\Models\\Invoices] ORDER BY inv_cst_id DESC', + 'cphalcon:database/Mvc/Model/Criteria/RightJoinTest#1' => 'SELECT [Phalcon\\Tests\\Support\\Models\\Invoices].* FROM [Phalcon\\Tests\\Support\\Models\\Invoices] RIGHT JOIN [Phalcon\\Tests\\Support\\Models\\Customers] AS [customer] ON inv_cst_id = cst_id', + 'cphalcon:database/Mvc/Model/GetChangedFieldsTest#1' => 'INSERT INTO co_invoices (inv_id, inv_cst_id, inv_status_flag, inv_title, inv_total, inv_created_at) VALUES (99, NULL, NULL, :title, NULL, :createdAt)', + 'cphalcon:database/Mvc/Model/GetUpdatedFieldsTest#1' => 'INSERT INTO co_invoices (inv_id, inv_cst_id, inv_status_flag, inv_title, inv_total, inv_created_at) VALUES (98, NULL, NULL, :title, NULL, :createdAt)', + 'cphalcon:database/Mvc/Model/InsertDefaultValuesTest#1' => 'INSERT', + 'cphalcon:database/Mvc/Model/InsertDefaultValuesTest#2' => 'select hex(gen_url_hash) as gen_url_hash from co_generated where gen_id = ', + 'cphalcon:database/Mvc/Model/JsonSerializeTest#1' => 'SELECT inv_id FROM ', + 'cphalcon:database/Mvc/Model/Manager/CreateQueryTest#1' => 'SELECT * FROM ', + 'cphalcon:database/Mvc/Model/Manager/ExecuteQueryTest#1' => 'SELECT * FROM [%s]', + 'cphalcon:database/Mvc/Model/Manager/ExecuteQueryTest#2' => 'SELECT SUM(inv_total) AS s FROM [%s]', + 'cphalcon:database/Mvc/Model/Manager/ExecuteQueryTest#3' => 'SELECT i.inv_total FROM [%s] AS i WHERE i.inv_id = :id:', + 'cphalcon:database/Mvc/Model/Manager/ExecuteQueryTest#4' => 'SELECT COUNT(inv_status_flag) FROM [%s] GROUP BY inv_status_flag', + 'cphalcon:database/Mvc/Model/Manager/ExecuteQueryTest#5' => 'INSERT INTO [%s] (inv_total) VALUES (1)', + 'cphalcon:database/Mvc/Model/Manager/ExecuteQueryTest#6' => 'UPDATE [%s] SET inv_total = 0 WHERE inv_id = :id:', + 'cphalcon:database/Mvc/Model/Manager/ExecuteQueryTest#7' => 'DELETE FROM [%s] WHERE inv_id = :id:', + 'cphalcon:database/Mvc/Model/Manager/ExecuteQueryTest#8' => 'INSERT INTO [%s] (inv_total) VALUES (0)', + 'cphalcon:database/Mvc/Model/Manager/ExecuteQueryTest#9' => 'UPDATE [%s] SET inv_total = inv_total + :inc: WHERE inv_id = :id:', + 'cphalcon:database/Mvc/Model/Manager/StickyConnectionTest#1' => 'SELECT', + 'cphalcon:database/Mvc/Model/Query/Builder/AndHavingTest#1' => 'SELECT * FROM [', + 'cphalcon:database/Mvc/Model/Query/Builder/ColumnsTest#1' => 'SELECT inv_id, inv_total FROM [', + 'cphalcon:database/Mvc/Model/Query/Builder/ConstructTest#1' => 'SELECT [', + 'cphalcon:database/Mvc/Model/Query/Builder/GetGroupByTest#1' => 'SELECT inv_status_flag, COUNT(*) FROM [', + 'cphalcon:database/Mvc/Model/Query/Builder/GetGroupByTest#2' => 'SELECT DATE_PART(\'year\', inv_created_at) year, inv_status_flag, COUNT(*) count FROM [', + 'cphalcon:database/Mvc/Model/Query/Builder/GetPhqlTest#1' => 'SELECT inv_id, inv_title, inv_status_flag FROM [', + 'cphalcon:database/Mvc/Model/Query/Builder/OrderByTest#1' => 'SELECT inv_id, inv_title FROM [Phalcon\\Tests\\Support\\Models\\Invoices] ORDER BY inv_title', + 'cphalcon:database/Mvc/Model/Query/Builder/OrderByTest#2' => 'SELECT inv_id, inv_title FROM [Phalcon\\Tests\\Support\\Models\\Invoices] ORDER BY inv_title DESC', + 'cphalcon:database/Mvc/Model/Query/Builder/OrderByTest#3' => 'SELECT inv_id, inv_title FROM [Phalcon\\Tests\\Support\\Models\\Invoices] ORDER BY COALESCE(inv_a, inv_b)', + 'cphalcon:database/Mvc/Model/Query/Builder/OrderByTest#4' => 'SELECT inv_id, inv_title FROM [Phalcon\\Tests\\Support\\Models\\Invoices] ORDER BY ', + 'cphalcon:database/Mvc/Model/Query/Builder/OrderByTest#5' => 'SELECT inv_id, inv_title FROM [Phalcon\\Tests\\Support\\Models\\Invoices] ORDER BY CASE WHEN inv_status_flag = 1 THEN 0 ELSE 1 END ASC, NOT inv_status_flag, [inv_title] DESC', + 'cphalcon:database/Mvc/Model/Query/CustomOperatorSqlTest#1' => 'SELECT i.inv_id FROM [%s] AS i WHERE i.inv_title ->> \'a\' = \'b\'', + 'cphalcon:database/Mvc/Model/Query/CustomOperatorSqlTest#2' => 'SELECT i.inv_id FROM [%s] AS i WHERE i.inv_title @> \'x\'', + 'cphalcon:database/Mvc/Model/Query/CustomOperatorSqlTest#3' => 'SELECT i.inv_id FROM [%s] AS i WHERE i.inv_title @@ \'x\'', + 'cphalcon:database/Mvc/Model/Query/ExecuteInsertRawValueTest#1' => 'INSERT INTO [%s] (inv_cst_id, inv_status_flag, inv_title, inv_total) VALUES (:cst_id:, :status:, :title:, :total:)', + 'cphalcon:database/Mvc/Model/Query/ExecuteSelectRawValueSpliceTest#1' => 'SELECT * FROM [%s] WHERE inv_status_flag = :p: AND inv_cst_id = :p1:', + 'cphalcon:database/Mvc/Model/Query/GetSqlTest#1' => 'SELECT i.inv_id, i.inv_cst_id FROM [%s] AS i', + 'cphalcon:database/Mvc/Model/Query/GetSqlTest#2' => 'SELECT `i`.`inv_id` AS `inv_id`, `i`.`inv_cst_id` AS `inv_cst_id` FROM `%s` AS `i`', + 'cphalcon:database/Mvc/Model/Query/GetSqlTest#3' => 'SELECT "i"."inv_id" AS "inv_id", "i"."inv_cst_id" AS "inv_cst_id" FROM "%s" AS "i"', + 'cphalcon:database/Mvc/Model/Query/ParseDynamicSchemaTest#1' => 'SELECT [%s].* FROM [%s]', + 'cphalcon:database/Mvc/Model/Query/PhqlInjectionTest#1' => 'INSERT INTO %s (tok) VALUES (\'%s\')', + 'cphalcon:database/Mvc/Model/Query/PhqlInjectionTest#2' => 'SELECT inv_id FROM [%s] WHERE inv_title = \'x\\\' OR 1=1 -- \'', + 'cphalcon:database/Mvc/Model/Query/PhqlInjectionTest#3' => 'SELECT [%s](inv_id) FROM [%s]', + 'cphalcon:database/Mvc/Model/Query/PhqlInjectionTest#4' => 'SELECT CAST(inv_id AS [%s]) FROM [%s]', + 'cphalcon:database/Mvc/Model/Query/RollbackOnExceptionTest#1' => 'DELETE FROM \\Phalcon\\Tests\\Support\\Models\\RbTestModel', + 'cphalcon:database/Mvc/Model/Query/RollbackOnExceptionTest#2' => 'INSERT INTO \\Phalcon\\Tests\\Support\\Models\\RbTestModel (id, name) VALUES (1, "abc")', + 'cphalcon:database/Mvc/Model/Query/RollbackOnExceptionTest#3' => 'INSERT INTO \\Phalcon\\Tests\\Support\\Models\\RbTestModel (id, name) VALUES (2, "abc")', + 'cphalcon:database/Mvc/Model/Query/RollbackOnExceptionTest#4' => 'INSERT INTO \\Phalcon\\Tests\\Support\\Models\\RbTestModel (id, name) VALUES (3, "abc")', + 'cphalcon:database/Mvc/Model/Query/RollbackOnExceptionTest#5' => 'INSERT INTO \\Phalcon\\Tests\\Support\\Models\\RbTestModel (id, name) VALUES (4, "abc")', + 'cphalcon:database/Mvc/Model/Query/RollbackOnExceptionTest#6' => 'INSERT INTO \\Phalcon\\Tests\\Support\\Models\\RbTestModel (id, name) VALUES (5, "abc")', + 'cphalcon:database/Mvc/Model/Query/RollbackOnExceptionTest#7' => 'Update test 1 OK', + 'cphalcon:database/Mvc/Model/Query/RollbackOnExceptionTest#8' => 'Update test 2 OK', + 'cphalcon:database/Mvc/Model/Query/RollbackOnExceptionTest#9' => 'Update test 3 OK', + 'cphalcon:database/Mvc/Model/Query/RollbackOnExceptionTest#10' => 'Update test 4 OK', + 'cphalcon:database/Mvc/Model/Query/RollbackOnExceptionTest#11' => 'Update test 5 OK', + 'cphalcon:database/Mvc/Model/Query/RollbackOnExceptionTest#12' => 'UPDATE \\Phalcon\\Tests\\Support\\Models\\RbTestModel SET name = :name: WHERE id = :id:', + 'cphalcon:database/Mvc/Model/Query/SetResultsetRowClassTest#1' => 'SELECT inv_id, inv_title FROM ', + 'cphalcon:database/Mvc/Model/Query/StringEscapeTest#1' => 'SELECT inv_id FROM [%s] WHERE inv_title = \'%s\'', + 'cphalcon:database/Mvc/Model/Query/StringEscapeTest#2' => 'SELECT REPLACE(inv_title, \'\\n\', \'
\') AS title FROM [%s] WHERE inv_id = 1', + 'cphalcon:database/Mvc/Model/Query/SubSelectArrayPlaceholderTest#1' => 'SELECT [%s].* FROM [%s] WHERE inv_id IN (SELECT [%s].inv_id FROM [%s] WHERE inv_id IN ({ids:array}))', + 'cphalcon:database/Mvc/Model/Query/UpdateJoinTest#1' => 'UPDATE [', + 'cphalcon:database/Mvc/Model/Resultset/Complex/CurrentTest#1' => 'SELECT copy.*, invoice.* FROM ', + 'cphalcon:database/Mvc/Model/Resultset/GetFirstTest#1' => 'SELECT i.inv_id FROM [%s] AS i', + 'cphalcon:database/Mvc/Model/Resultset/GetFirstTest#2' => 'SELECT * FROM [%s] AS i', + 'cphalcon:database/Mvc/Model/Resultset/GetFirstTest#3' => 'SELECT i.inv_id FROM [%s] AS i WHERE inv_total = -42', + 'cphalcon:database/Mvc/Model/SkipAttributesTest#1' => 'UPDATE', + 'cphalcon:database/Mvc/Model/SkipAttributesTest#2' => 'select inv_created_at from co_invoices where inv_id = 4', + 'cphalcon:database/Mvc/Model/SkipAttributesTest#3' => 'select inv_created_at from co_invoices where inv_id = ', + 'cphalcon:database/Mvc/Model/SkipAttributesTest#4' => 'select inv_created_at from co_invoices where inv_id = 3', + 'cphalcon:database/Mvc/Model/SpatialHydrationTest#1' => 'INSERT INTO co_spatial (id, location) VALUES (1, ST_GeomFromText(\'POINT(1 2)\'))', + 'cphalcon:database/Mvc/Model/Transaction/ManagerTest#1' => 'SELECT COUNT(*) FROM ph_select', + 'cphalcon:database/Paginator/Adapter/QueryBuilder/PaginateTest#1' => 'INSERT INTO co_invoices (inv_cst_id, inv_status_flag, inv_title, inv_total, inv_created_at) ', + 'cphalcon:support/Migrations/AlbumMigration#1' => 'insert into album ( + id, name, album_id, proto_id +) values ( + :id, :name, :albumId, :photoId +)', + 'cphalcon:support/Migrations/AlbumsMigration#1' => 'insert into albums (id, artists_id, name) values (:id, :artistsId, :name)', + 'cphalcon:support/Migrations/ArtistsMigration#1' => 'insert into artists (id, name) values (:id, :name)', + 'cphalcon:support/Migrations/ComplexDefaultMigration#1' => 'insert into complex_default ( + id, created, updated +) values ( + :id, :created, :updated +)', + 'cphalcon:support/Migrations/CustomersDefaultsMigration#1' => 'insert into co_customers_defaults ( + cst_id, cst_status_flag, cst_name_first, cst_name_last +) values ( + :id, :status, :first, :last +)', + 'cphalcon:support/Migrations/CustomersMigration#1' => 'insert into co_customers ( + cst_id, cst_status_flag, cst_name_first, cst_name_last +) values ( + :id, :status, :first, :last +)', + 'cphalcon:support/Migrations/DialectMigration#1' => 'insert into co_dialect ( + field_primary, + field_blob, + field_binary, + field_bit, + field_bigint, + field_boolean, + field_char, + field_decimal, + field_enum, + field_integer, + field_json, + field_float, + field_date, + field_datetime, + field_time, + field_timestamp, + field_mediumint, + field_smallint, + field_tinyint, + field_longtext, + field_mediumtext, + field_tinytext, + field_text, + field_varbinary, + field_varchar +) values ( + :primary, + :blob, + :binary, + :bit, + :bigint, + :boolean, + :char, + :decimal, + :enum, + :integer, + :json, + :float, + :date, + :datetime, + :time, + :timestamp, + :mediumint, + :smallint, + :tinyint, + :longtext, + :mediumtext, + :tinytext, + :text, + :varbinary, + :varchar +)', + 'cphalcon:support/Migrations/FractalDatesMigration#1' => 'insert into fractal_dates (id, ftime, fdatetime, ftimestamp) +values (:id, :time, :dateTime, :timeStamp)', + 'cphalcon:support/Migrations/InvoicesMigration#1' => 'insert into co_invoices ( + inv_cst_id, inv_status_flag, inv_title, inv_total, inv_created_at +) values ( + :custId, :status, :title, :total, :createdAt +)', + 'cphalcon:support/Migrations/InvoicesMigration#2' => 'insert into co_invoices ( + inv_id, inv_cst_id, inv_status_flag, inv_title, inv_total, inv_created_at +) values ( + :id, :custId, :status, :title, :total, :createdAt +)', + 'cphalcon:support/Migrations/ManufacturersMigration#1' => 'insert into co_manufacturers ( + id, name, country, founded_year +) values ( + :id, :name, :country, :foundedYear +)', + 'cphalcon:support/Migrations/ObjectsMigration#1' => 'insert into objects (obj_id, obj_name, obj_type) +values (:id, :name, :type)', + 'cphalcon:support/Migrations/OrdersMigration#1' => 'insert into co_orders ( + ord_id, ord_name, ord_status_flag +) values ( + :id, :name, :statusFlag +)', + 'cphalcon:support/Migrations/OrdersProductsFieldsMultCompMigration#1' => 'insert into co_orders_x_products_mult_comp ( + oxp_ord_id, oxp_prd_id, oxp_quantity, oxp_ord_status_flag, oxp_prd_status_flag +) values ( + :oxpOrdId, :oxpPrdId, :oxpQuantity, :oxpOrdStatusFlag, :oxpPrdStatusFlag +)', + 'cphalcon:support/Migrations/OrdersProductsFieldsMultMigration#1' => 'insert into co_orders_x_products_mult ( + oxp_id, oxp_ord_id, oxp_prd_id, oxp_quantity, oxp_ord_status_flag, oxp_prd_status_flag +) values ( + :oxpId, :oxpOrdId, :oxpPrdId, :oxpQuantity, :oxpOrdStatusFlag, :oxpPrdStatusFlag +)', + 'cphalcon:support/Migrations/OrdersProductsFieldsOneCompMigration#1' => 'insert into co_orders_x_products_one_comp ( + oxp_ord_id, oxp_prd_id, oxp_quantity +) values ( + :oxpOrdId, :oxpPrdId, :oxpQuantity +)', + 'cphalcon:support/Migrations/OrdersProductsFieldsOneMigration#1' => 'insert into co_orders_x_products_one ( + oxp_id, oxp_ord_id, oxp_prd_id, oxp_quantity +) values ( + :oxpId, :oxpOrdId, :oxpPrdId, :oxpQuantity +)', + 'cphalcon:support/Migrations/OrdersProductsMigration#1' => 'insert into co_orders_x_products ( + oxp_ord_id, oxp_prd_id, oxp_quantity +) values ( + :oxpOrdId, :oxpPrdId, :oxpQuantity +)', + 'cphalcon:support/Migrations/PersonasMigration#1' => 'insert into personas (cedula, tipo_documento_id, nombres, telefono, cupo, estado) +values (:cedula, :tipoDocumentoId, :nombres, :telefono, :cupo, :estado)', + 'cphalcon:support/Migrations/ProductsMigration#1' => 'insert into co_products ( + prd_id, prd_name, prd_status_flag +) values ( + :id, :name, :statusFlag +)', + 'cphalcon:support/Migrations/SelectMigration#1' => 'insert into ph_select (sel_name, sel_text) +values (:name, :text)', + 'cphalcon:support/Migrations/SettersMigration#1' => 'insert into co_setters (column1, column2, column3) +values (:column1, :column2, :column3)', + 'cphalcon:support/Migrations/SongsMigration#1' => 'insert into songs (id, albums_id, name) values (:id, :albumsId, :name)', + 'cphalcon:support/Migrations/SourcesMigration#1' => 'insert into co_sources (id, username, source) +values (:id, :username, :source)', + 'cphalcon:support/Migrations/StringPrimaryMigration#1' => 'insert into table_with_uuid_primary (uuid, int_field) +values (:uuid, :intField)', + 'cphalcon:support/Migrations/StuffMigration#1' => 'insert into stuff (stf_id, stf_name, stf_type) +values (:id, :name, :type)', + 'cphalcon:support/Page/Http#1' => 'DELETE', + 'cphalcon:support/Traits/QueryCounterTrait#1' => 'SELECT COUNT(*) "numrows" FROM (', + 'cphalcon:unit/Db/Dialect/LimitInjectionTest#1' => 'SELECT * FROM robots LIMIT 5 OFFSET 20', + 'cphalcon:unit/Db/Dialect/LimitInjectionTest#2' => 'SELECT * FROM robots LIMIT :APL0:', + 'cphalcon:unit/Db/Dialect/LimitInjectionTest#3' => 'SELECT * FROM robots LIMIT :APL0: OFFSET :APL1:', + 'cphalcon:unit/Mvc/Model/Query/Lang/ParsePHQLTest#1' => 'SELECT [TagMe\\Modules\\Identity\\Infrastructure\\User\\Model\\Elasticsearch\\Users].* FROM [TagMe\\Modules\\Identity\\Infrastructure\\User\\Model\\Elasticsearch\\Users] WHERE _id = \'GcbN9FIoI8IC3LqBIuCu50AC02TpI8ruKOjyzd1fqOCuna\' LIMIT :APL0:', + 'cphalcon:unit/Mvc/Model/Query/Lang/ParsePHQLTest#2' => 'SELECT [TagMe\\Modules\\Identity\\Infrastructure\\User\\Model\\Elasticsearch\\Users].* FROM [TagMe\\Modules\\Identity\\Infrastructure\\User\\Model\\Elasticsearch\\Users] WHERE _id = \'GcbN9FIoI8IC3LpcIuCu50AC02TpI8ruKOjyzd1fqOCuna\' LIMIT :APL0:', + 'cphalcon:unit/Mvc/Model/Query/Lang/ParsePHQLTest#3' => 'SELECT * FROM Robots WHERE name = \'B0\'', + 'cphalcon:unit/Mvc/Model/Query/Lang/ParsePHQLTest#4' => 'SELECT * FROM Robots WHERE name = \'AQ\'', + 'cphalcon:unit/Mvc/Model/Query/Lang/ParsePHQLTest#5' => 'SELECT * FROM Robots WHERE name = \'qB\'', + 'cphalcon:unit/Mvc/Model/Query/Lang/ParsePHQLTest#6' => 'SELECT * FROM Robots WHERE name = \'pc\'', + 'cphalcon:unit/Mvc/Model/Query/Lang/ParsePHQLTest#7' => 'SELECT * FROM Robots WHERE name = \'cacheHit\'', + 'cphalcon:unit/Mvc/Model/Query/Lang/ParsePHQLTest#8' => 'SELECT * FROM Robots WHERE name = \'a', + 'cphalcon:unit/Mvc/Model/Query/Lang/ParsePHQLTest#9' => 'SELECT * FROM Robots WHERE id IN (', + 'cphalcon:unit/Mvc/Model/Query/Lang/ParsePHQLTest#10' => 'SELECT * FROM Robots WHERE name = "', + 'cphalcon:unit/Mvc/Model/Query/Lang/ParsePHQLTest#11' => 'SELECT * FROM Robots WHERE name = ', + 'cphalcon:unit/Mvc/Model/Query/Lang/StackOverflowTest#1' => 'SELECT * FROM Robots WHERE id = ', + 'cphalcon:unit/Mvc/Model/Query/Phql/Delete/CombinationTest#1' => 'DELETE FROM Invoices', + 'cphalcon:unit/Mvc/Model/Query/Phql/Delete/CombinationTest#2' => 'DELETE FROM Invoices AS i WHERE i.inv_status_flag = 0', + 'cphalcon:unit/Mvc/Model/Query/Phql/Delete/CombinationTest#3' => 'DELETE FROM Invoices LIMIT 10', + 'cphalcon:unit/Mvc/Model/Query/Phql/Delete/CombinationTest#4' => 'DELETE FROM Invoices WHERE inv_id = 1', + 'cphalcon:unit/Mvc/Model/Query/Phql/Delete/CombinationTest#5' => 'DELETE FROM Invoices WHERE inv_id = :id:', + 'cphalcon:unit/Mvc/Model/Query/Phql/Delete/CombinationTest#6' => 'DELETE FROM Invoices WHERE inv_id = ?0', + 'cphalcon:unit/Mvc/Model/Query/Phql/Delete/CombinationTest#7' => 'DELETE FROM Invoices WHERE inv_status_flag = 0', + 'cphalcon:unit/Mvc/Model/Query/Phql/Delete/CombinationTest#8' => 'DELETE FROM Invoices WHERE inv_cst_id IN (1, 2, 3)', + 'cphalcon:unit/Mvc/Model/Query/Phql/Delete/CombinationTest#9' => 'DELETE FROM Invoices WHERE inv_created_at IS NULL', + 'cphalcon:unit/Mvc/Model/Query/Phql/Delete/CombinationTest#10' => 'DELETE FROM Invoices WHERE inv_total < 0 LIMIT 3', + 'cphalcon:unit/Mvc/Model/Query/Phql/Insert/CombinationTest#1' => 'INSERT INTO Invoices (inv_cst_id, inv_status_flag, inv_title, inv_total, inv_created_at) VALUES (1, 0, \'Test Invoice\', 150.50, \'2025-01-01 00:00:00\')', + 'cphalcon:unit/Mvc/Model/Query/Phql/Insert/CombinationTest#2' => 'INSERT INTO Invoices VALUES (1, 1, 1, \'Test Invoice\', 100.00, \'2025-01-01 00:00:00\')', + 'cphalcon:unit/Mvc/Model/Query/Phql/Insert/CombinationTest#3' => 'INSERT INTO Invoices (inv_total) VALUES (100 + 50)', + 'cphalcon:unit/Mvc/Model/Query/Phql/Insert/CombinationTest#4' => 'INSERT INTO Invoices (inv_title, inv_total) VALUES (\'Null Test\', NULL)', + 'cphalcon:unit/Mvc/Model/Query/Phql/Insert/CombinationTest#5' => 'INSERT INTO Invoices (inv_title, inv_total) VALUES (\'Invoice A\', 200.00)', + 'cphalcon:unit/Mvc/Model/Query/Phql/Insert/CombinationTest#6' => 'INSERT INTO Invoices (inv_cst_id, inv_status_flag, inv_title, inv_total) VALUES (:cstId:, :status:, :title:, :total:)', + 'cphalcon:unit/Mvc/Model/Query/Phql/Insert/CombinationTest#7' => 'INSERT INTO Invoices (inv_id, inv_cst_id, inv_status_flag, inv_title, inv_total) VALUES ({id}, {cstId}, {status}, {title}, {total})', + 'cphalcon:unit/Mvc/Model/Query/Phql/Insert/CombinationTest#8' => 'INSERT INTO Invoices (inv_cst_id, inv_title, inv_total) VALUES (?0, ?1, ?2)', + 'cphalcon:unit/Mvc/Model/Query/Phql/Insert/CombinationTest#9' => 'INSERT INTO Invoices (inv_title, inv_status_flag) VALUES (\'New Invoice\', TRUE)', + 'cphalcon:unit/Mvc/Model/Query/Phql/Insert/CombinationTest#10' => 'INSERT INTO Invoices (inv_title, inv_total) VALUES (UPPER(\'test invoice\'), 100.00)', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/AggregateTest#1' => 'SELECT AVG(inv_total) FROM Invoices', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/AggregateTest#2' => 'SELECT COUNT(*) FROM Invoices', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/AggregateTest#3' => 'SELECT COUNT(DISTINCT inv_cst_id) FROM Invoices', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/AggregateTest#4' => 'SELECT COUNT(inv_id) FROM Invoices', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/AggregateTest#5' => 'SELECT COUNT(*), SUM(inv_total), AVG(inv_total), MIN(inv_total), MAX(inv_total) FROM Invoices', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/AggregateTest#6' => 'SELECT MAX(inv_created_at) FROM Invoices', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/AggregateTest#7' => 'SELECT MAX(inv_total) FROM Invoices', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/AggregateTest#8' => 'SELECT MIN(inv_created_at) FROM Invoices', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/AggregateTest#9' => 'SELECT MIN(inv_total) FROM Invoices', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/AggregateTest#10' => 'SELECT SUM(inv_total) FROM Invoices', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/BasicTest#1' => 'SELECT * FROM Invoices', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/BasicTest#2' => 'SELECT i.* FROM Invoices i', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/BasicTest#3' => 'SELECT Invoices.* FROM Invoices', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/BasicTest#4' => 'SELECT inv_id, inv_title, inv_total FROM Invoices', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/BasicTest#5' => 'SELECT inv_id FROM Invoices', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/BasicTest#6' => 'SELECT i.inv_id FROM Invoices i', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/BasicTest#7' => 'SELECT i.inv_id FROM Invoices AS i', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/BasicTest#8' => 'SELECT Invoices.inv_id FROM Invoices', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/BasicTest#9' => 'SELECT inv_id, inv_title FROM Invoices', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/BetweenTest#1' => 'SELECT * FROM Invoices WHERE inv_total BETWEEN 10.00 AND 500.00', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/BetweenTest#2' => 'SELECT * FROM Invoices WHERE inv_id BETWEEN 1 AND 100', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/BetweenTest#3' => 'SELECT * FROM Invoices WHERE inv_total NOT BETWEEN 10.00 AND 500.00', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/BetweenTest#4' => 'SELECT * FROM Invoices WHERE inv_id NOT BETWEEN 1 AND 100', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/BitwiseTest#1' => 'SELECT * FROM Invoices WHERE inv_status_flag & 1 = 1', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/BitwiseTest#2' => 'SELECT inv_status_flag & 3 AS masked FROM Invoices', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/BitwiseTest#3' => 'SELECT ~inv_status_flag FROM Invoices', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/BitwiseTest#4' => 'SELECT * FROM Invoices WHERE inv_status_flag | 2 = 3', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/BitwiseTest#5' => 'SELECT * FROM Invoices WHERE inv_status_flag ^ 1 = 0', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/BracketsNameTest#1' => 'SELECT [inv_id], [inv_title] FROM [Invoices]', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/BracketsNameTest#2' => 'SELECT [inv_id] FROM Invoices WHERE [inv_status_flag] = 1', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/BracketsWithEscapedNameTest#1' => 'SELECT [col\\[0\\]], [col\\[1\\]] FROM Items', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/BracketsWithSpaceNameTest#1' => 'SELECT [First Name], [Last Name] FROM Contacts', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/BracketsWithSpaceNameTest#2' => 'SELECT c.[First Name], c.[Last Name] FROM Contacts AS c', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/BracketsWithSpaceNameTest#3' => 'SELECT c.[First Name] FROM Contacts AS c WHERE c.[Last Name] = \'Smith\'', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/BracketsWithSpaceNameTest#4' => 'SELECT [First Name] AS firstName, [Last Name] AS lastName FROM Contacts ORDER BY [Last Name] ASC', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/BracketsWithSpaceNameTest#5' => 'SELECT * FROM [My Table]', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/CaseTest#1' => 'SELECT CASE inv_status_flag WHEN 0 THEN \'pending\' WHEN 1 THEN \'paid\' ELSE \'unknown\' END FROM Invoices', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/CaseTest#2' => 'SELECT CASE inv_status_flag WHEN 0 THEN \'pending\' WHEN 1 THEN \'paid\' ELSE \'unknown\' END AS status FROM Invoices', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/CaseTest#3' => 'SELECT * FROM Invoices WHERE CASE inv_status_flag WHEN 1 THEN 1 ELSE 0 END = 1', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/CastConvertTest#1' => 'SELECT CAST(inv_total AS INTEGER) FROM Invoices', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/CastConvertTest#2' => 'SELECT CAST(inv_id AS VARCHAR) FROM Invoices', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/CastConvertTest#3' => 'SELECT CONVERT(inv_title USING utf8) FROM Invoices', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/ColumnAliasesTest#1' => 'SELECT inv_id AS id FROM Invoices', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/ColumnAliasesTest#2' => 'SELECT inv_title AS title, inv_total AS total FROM Invoices', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/ColumnAliasesTest#3' => 'SELECT i.inv_id AS id, i.inv_title title FROM Invoices AS i', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/ComplexTest#1' => 'SELECT * FROM Invoices WHERE inv_cst_id = :cstId: AND inv_status_flag IN (0, 1) AND inv_total BETWEEN :min: AND :max: ORDER BY inv_created_at DESC LIMIT :limit: OFFSET :offset:', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/ComplexTest#2' => 'SELECT COUNT(*) AS cnt, inv_status_flag FROM Invoices WHERE inv_created_at IS NOT NULL GROUP BY inv_status_flag ORDER BY cnt DESC', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/ComplexTest#3' => 'SELECT i.inv_id, i.inv_title, SUM(i.inv_total) AS total FROM Invoices AS i WHERE i.inv_status_flag = 1 GROUP BY i.inv_cst_id HAVING SUM(i.inv_total) > 500 ORDER BY total DESC LIMIT 10', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/DistinctTest#1' => 'SELECT ALL inv_status_flag FROM Invoices', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/DistinctTest#2' => 'SELECT DISTINCT inv_status_flag FROM Invoices', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/DistinctTest#3' => 'SELECT DISTINCT inv_cst_id, inv_status_flag FROM Invoices', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/ForUpdateTest#1' => 'SELECT * FROM Invoices FOR UPDATE', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/ForUpdateTest#2' => 'SELECT * FROM Invoices WHERE inv_id = 1 FOR UPDATE', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/FromTest#1' => 'SELECT i.inv_id, c.name FROM Invoices AS i, Customers AS c WHERE i.inv_cst_id = c.id', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/FromTest#2' => 'SELECT * FROM Invoices, Customers', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/FromTest#3' => 'SELECT * FROM Invoices, Customers WHERE Invoices.inv_cst_id = Customers.id', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/GroupByTest#1' => 'SELECT inv_status_flag, COUNT(*) FROM Invoices GROUP BY inv_status_flag', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/GroupByTest#2' => 'SELECT inv_cst_id, inv_status_flag, COUNT(*) FROM Invoices GROUP BY inv_cst_id, inv_status_flag', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/GroupByTest#3' => 'SELECT inv_cst_id, SUM(inv_total) FROM Invoices GROUP BY inv_cst_id', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/HasManyToManyThroughAstTest#1' => 'SELECT [Phalcon\\Tests\\Support\\Models\\Products].* FROM [Phalcon\\Tests\\Support\\Models\\Products] INNER JOIN [Phalcon\\Tests\\Support\\Models\\OrdersProductsFieldsOne] ON [Phalcon\\Tests\\Support\\Models\\OrdersProductsFieldsOne].[oxp_prd_id] = [Phalcon\\Tests\\Support\\Models\\Products].[prd_id] WHERE [Phalcon\\Tests\\Support\\Models\\OrdersProductsFieldsOne].[oxp_ord_id] = :APR0:', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/HavingTest#1' => 'SELECT inv_status_flag, COUNT(*) AS cnt FROM Invoices GROUP BY inv_status_flag HAVING COUNT(*) > 5', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/HavingTest#2' => 'SELECT inv_cst_id, COUNT(*) AS cnt FROM Invoices GROUP BY inv_cst_id HAVING cnt > 10', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/HavingTest#3' => 'SELECT inv_cst_id, SUM(inv_total) AS total FROM Invoices GROUP BY inv_cst_id HAVING SUM(inv_total) > 1000', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/JoinTest#1' => 'SELECT i.inv_id, c.name FROM Invoices AS i CROSS JOIN Customers AS c', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/JoinTest#2' => 'SELECT i.inv_id, c.name FROM Invoices AS i FULL JOIN Customers AS c ON i.inv_cst_id = c.id', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/JoinTest#3' => 'SELECT i.inv_id, c.name FROM Invoices AS i FULL OUTER JOIN Customers AS c ON i.inv_cst_id = c.id', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/JoinTest#4' => 'SELECT i.inv_id, c.name FROM Invoices AS i INNER JOIN Customers AS c ON i.inv_cst_id = c.id', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/JoinTest#5' => 'SELECT i.inv_id, c.name FROM Invoices AS i INNER JOIN Customers AS c ON (i.inv_cst_id = c.id AND i.inv_status_flag = 1)', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/JoinTest#6' => 'SELECT i.inv_id, c.name, p.description FROM Invoices AS i INNER JOIN Customers AS c ON i.inv_cst_id = c.id LEFT JOIN Products AS p ON i.inv_id = p.inv_id', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/JoinTest#7' => 'SELECT i.inv_id, c.name FROM Invoices AS i JOIN Customers AS c ON i.inv_cst_id = c.id', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/JoinTest#8' => 'SELECT i.inv_id, c.name FROM Invoices AS i LEFT JOIN Customers AS c ON i.inv_cst_id = c.id', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/JoinTest#9' => 'SELECT i.inv_id, c.name FROM Invoices AS i LEFT OUTER JOIN Customers AS c ON i.inv_cst_id = c.id', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/JoinTest#10' => 'SELECT i.inv_id, c.name FROM Invoices AS i RIGHT JOIN Customers AS c ON i.inv_cst_id = c.id', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/JoinTest#11' => 'SELECT i.inv_id, c.name FROM Invoices AS i RIGHT OUTER JOIN Customers AS c ON i.inv_cst_id = c.id', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/KeywordCollisionsNameTest#1' => 'SELECT [Order], [Group] FROM Items', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/KeywordCollisionsNameTest#2' => 'SELECT [Delete], [Update] FROM AuditLog', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/KeywordCollisionsNameTest#3' => 'Delete', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/KeywordCollisionsNameTest#4' => 'Update', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/KeywordCollisionsNameTest#5' => 'SELECT [Order], [Desc] FROM Items ORDER BY [Order] ASC', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/KeywordCollisionsNameTest#6' => 'SELECT [Values], [Set] FROM Config', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/KeywordCollisionsNameTest#7' => 'SELECT * FROM Items WHERE [Select] = 1', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/KeywordCollisionsNameTest#8' => 'Select', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/KeywordCollisionsNameTest#9' => 'SELECT * FROM Items WHERE [In] = 1', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/KeywordCollisionsNameTest#10' => 'SELECT * FROM Items WHERE [From] IS NOT NULL', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/KeywordCollisionsNameTest#11' => 'SELECT * FROM Items WHERE [Null] IS NULL', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/KeywordCollisionsNameTest#12' => 'SELECT * FROM Items WHERE [Where] = \'test\'', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/KeywordCollisionsNameTest#13' => 'SELECT * FROM Items WHERE [Not] = 0', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/KeywordPrefixNameTest#1' => 'SELECT * FROM Robots r LEFT JOIN RobotsParts rp ON r.notes_id = rp.robots_id', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/KeywordPrefixNameTest#2' => 'SELECT Groups FROM Settings', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/KeywordPrefixNameTest#3' => 'SELECT [Groups] FROM Settings', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/KeywordPrefixNameTest#4' => 'SELECT Notes FROM Contacts', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/KeywordPrefixNameTest#5' => 'SELECT [Notes] FROM Contacts', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/KeywordPrefixNameTest#6' => 'SELECT Orders FROM Customers', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/KeywordPrefixNameTest#7' => 'SELECT [Orders] FROM Customers', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/KeywordPrefixNameTest#8' => 'SELECT * FROM Contacts WHERE [Notes] IS NOT NULL', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/KeywordPrefixNameTest#9' => 'SELECT * FROM Contacts WHERE [Notes] LIKE \'%important%\'', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/KeywordPrefixNameTest#10' => 'SELECT COUNT(*) AS rowcount FROM Travel WHERE notification_sent=1', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/LikeTest#1' => 'SELECT * FROM Invoices WHERE inv_title ILIKE \'%invoice%\'', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/LikeTest#2' => 'SELECT * FROM Invoices WHERE inv_title LIKE \'%test%\'', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/LikeTest#3' => 'SELECT * FROM Invoices WHERE inv_title NOT ILIKE \'%draft%\'', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/LikeTest#4' => 'SELECT * FROM Invoices WHERE inv_title NOT LIKE \'%draft%\'', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/LimitTest#1' => 'SELECT * FROM Invoices LIMIT 10', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/LimitTest#2' => 'SELECT * FROM Invoices LIMIT 20, 10', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/LimitTest#3' => 'SELECT * FROM Invoices LIMIT {limit}', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/LimitTest#4' => 'SELECT * FROM Invoices LIMIT {limit} OFFSET {offset}', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/LimitTest#5' => 'SELECT * FROM Invoices LIMIT 10 OFFSET 20', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/LimitTest#6' => 'SELECT * FROM Invoices LIMIT :limit: OFFSET :offset:', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/LimitTest#7' => 'SELECT * FROM Invoices LIMIT ?0', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/LimitTest#8' => 'SELECT * FROM Invoices WHERE inv_status_flag = 1 ORDER BY inv_id DESC LIMIT 5', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/LiteralsTest#1' => 'SELECT * FROM Invoices WHERE inv_status_flag = FALSE', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/LiteralsTest#2' => 'SELECT * FROM Invoices WHERE inv_total = 100.5', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/LiteralsTest#3' => 'SELECT * FROM Invoices WHERE inv_total = .5', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/LiteralsTest#4' => 'SELECT * FROM Invoices WHERE inv_total = 100.', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/LiteralsTest#5' => 'SELECT NULL FROM Invoices', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/LiteralsTest#6' => 'SELECT * FROM Invoices WHERE inv_status_flag = TRUE', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/LiteralsTest#7' => 'SELECT * FROM Invoices WHERE inv_id = 0xFF', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/MatchAgainstTest#1' => 'SELECT * FROM Invoices WHERE inv_title AGAINST \'invoice\'', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/MatchAgainstTest#2' => 'SELECT * FROM Invoices WHERE MATCH(inv_title) AGAINST (\'invoice\')', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/NullTest#1' => 'SELECT * FROM Invoices WHERE inv_title IS NOT NULL', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/NullTest#2' => 'SELECT * FROM Invoices WHERE inv_title IS NULL', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/OperatorsTest#1' => 'SELECT inv_total + 10 FROM Invoices', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/OperatorsTest#2' => 'SELECT inv_total / 2 FROM Invoices', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/OperatorsTest#3' => 'SELECT inv_total % 3 FROM Invoices', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/OperatorsTest#4' => 'SELECT inv_total * 1.1 FROM Invoices', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/OperatorsTest#5' => 'SELECT inv_id, inv_total * 1.1 AS total_with_tax FROM Invoices', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/OperatorsTest#6' => 'SELECT inv_id, (inv_total + 5) * 2 AS adjusted FROM Invoices', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/OperatorsTest#7' => 'SELECT inv_total - 5 FROM Invoices', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/OrderByTest#1' => 'SELECT inv_cst_id, COUNT(*) FROM Invoices GROUP BY inv_cst_id ORDER BY COUNT(*) DESC', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/OrderByTest#2' => 'SELECT * FROM Invoices ORDER BY inv_created_at DESC, inv_id ASC', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/OrderByTest#3' => 'SELECT * FROM Invoices ORDER BY inv_total DESC, inv_title ASC, inv_id ASC', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/OrderByTest#4' => 'SELECT * FROM Invoices ORDER BY inv_id', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/OrderByTest#5' => 'SELECT * FROM Invoices ORDER BY inv_id ASC', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/OrderByTest#6' => 'SELECT * FROM Invoices ORDER BY inv_id DESC', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/QualifiedNamesTest#1' => 'SELECT * FROM App\\Models\\Invoices', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/QualifiedNamesTest#2' => 'SELECT i.inv_id FROM App\\Models\\Invoices AS i', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/QualifiedNamesTest#3' => 'SELECT * FROM App\\Models\\Invoices WHERE inv_id = 1', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/ScalarTest#1' => 'SELECT ABS(inv_total) FROM Invoices', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/ScalarTest#2' => 'SELECT COALESCE(inv_title, \'N/A\') FROM Invoices', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/ScalarTest#3' => 'SELECT CONCAT(inv_title, \' - paid\') FROM Invoices', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/ScalarTest#4' => 'SELECT IFNULL(inv_title, \'N/A\') FROM Invoices', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/ScalarTest#5' => 'SELECT LENGTH(inv_title) FROM Invoices', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/ScalarTest#6' => 'SELECT LOWER(inv_title) FROM Invoices', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/ScalarTest#7' => 'SELECT MONTH(inv_created_at), COUNT(*) FROM Invoices GROUP BY MONTH(inv_created_at)', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/ScalarTest#8' => 'SELECT NOW() FROM Invoices', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/ScalarTest#9' => 'SELECT ROUND(inv_total, 2) FROM Invoices', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/ScalarTest#10' => 'SELECT TRIM(inv_title) FROM Invoices', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/ScalarTest#11' => 'SELECT UPPER(inv_title) FROM Invoices', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/ScalarTest#12' => 'SELECT YEAR(inv_created_at) FROM Invoices', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/SubqueriesTest#1' => 'SELECT i.inv_id, (SELECT COUNT(*) FROM Invoices WHERE inv_cst_id = i.inv_cst_id) AS cst_count FROM Invoices i', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/SubqueriesTest#2' => 'SELECT * FROM Invoices WHERE inv_total = (SELECT MAX(inv_total) FROM Invoices)', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/SubqueriesTest#3' => 'SELECT * FROM Invoices WHERE EXISTS (SELECT id FROM Customers WHERE id = Invoices.inv_cst_id)', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/SubqueriesTest#4' => 'SELECT * FROM Invoices WHERE inv_cst_id IN (SELECT id FROM Customers WHERE id IN (SELECT cst_id FROM Orders WHERE status = 1))', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/SubqueriesTest#5' => 'SELECT * FROM Invoices WHERE inv_cst_id IN (SELECT id FROM Customers WHERE status = 1)', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/SubqueriesTest#6' => 'SELECT * FROM Invoices WHERE inv_cst_id NOT IN (SELECT id FROM Customers WHERE status = 0)', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/UnaryMinusTest#1' => 'SELECT -inv_total FROM Invoices', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/UnaryMinusTest#2' => 'SELECT * FROM Invoices WHERE inv_total > -1', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/WhereInTest#1' => 'SELECT * FROM Invoices WHERE inv_status_flag IN (0, 1, 2)', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/WhereInTest#2' => 'SELECT * FROM Invoices WHERE inv_status_flag NOT IN (0, 1)', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/WhereLogicalTest#1' => 'SELECT * FROM Invoices WHERE inv_status_flag = 1 AND inv_total > 0', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/WhereLogicalTest#2' => 'SELECT * FROM Invoices WHERE inv_cst_id = 1 AND inv_status_flag = 1 AND inv_total > 0', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/WhereLogicalTest#3' => 'SELECT * FROM Invoices WHERE NOT inv_status_flag = 0', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/WhereLogicalTest#4' => 'SELECT * FROM Invoices WHERE inv_status_flag = 0 OR inv_status_flag = 1', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/WhereLogicalTest#5' => 'SELECT * FROM Invoices WHERE (inv_status_flag = 1 OR inv_status_flag = 2) AND inv_total > 0', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/WherePlaceholdersTest#1' => 'SELECT * FROM Invoices WHERE inv_id = {id}', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/WherePlaceholdersTest#2' => 'SELECT * FROM Invoices WHERE inv_cst_id = {custId} AND inv_total > {minTotal}', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/WherePlaceholdersTest#3' => 'SELECT * FROM Invoices WHERE inv_id = ?0', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/WherePlaceholdersTest#4' => 'SELECT * FROM Invoices WHERE inv_id = ?1 AND inv_status_flag = ?2', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/WherePlaceholdersTest#5' => 'SELECT * FROM Invoices WHERE inv_title = :title:', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/WherePlaceholdersTest#6' => 'SELECT * FROM Invoices WHERE inv_cst_id = :custId: AND inv_status_flag = :status:', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/WhereTest#1' => 'SELECT * FROM Invoices WHERE inv_id = 1', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/WhereTest#2' => 'SELECT * FROM Invoices WHERE inv_title = \'test invoice\'', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/WhereTest#3' => 'SELECT * FROM Invoices WHERE UPPER(inv_title) = \'TEST INVOICE\'', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/WhereTest#4' => 'SELECT * FROM Invoices WHERE UPPER(inv_title) = :title:', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/WhereTest#5' => 'SELECT * FROM Invoices WHERE inv_total >= 100.00', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/WhereTest#6' => 'SELECT * FROM Invoices WHERE inv_total > 100.00', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/WhereTest#7' => 'SELECT * FROM Invoices WHERE inv_total <= 100.00', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/WhereTest#8' => 'SELECT * FROM Invoices WHERE inv_total < 100.00', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/WhereTest#9' => 'SELECT * FROM Invoices WHERE inv_id != 1', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/WhereTest#10' => 'SELECT * FROM Invoices WHERE inv_id <> 1', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/WithTest#1' => 'SELECT * FROM Invoices AS i WITH cache', + 'cphalcon:unit/Mvc/Model/Query/Phql/Select/WithTest#2' => 'SELECT * FROM Invoices AS i WITH (cache, shared)', + 'cphalcon:unit/Mvc/Model/Query/Phql/Update/CombinationTest#1' => 'UPDATE Invoices SET inv_status_flag = 1', + 'cphalcon:unit/Mvc/Model/Query/Phql/Update/CombinationTest#2' => 'UPDATE Invoices AS i SET i.inv_status_flag = 1 WHERE i.inv_cst_id = 1', + 'cphalcon:unit/Mvc/Model/Query/Phql/Update/CombinationTest#3' => 'UPDATE Invoices SET inv_total = inv_total * 1.1 WHERE inv_status_flag = 0', + 'cphalcon:unit/Mvc/Model/Query/Phql/Update/CombinationTest#4' => 'UPDATE Invoices INNER JOIN Customers ON Customers.cst_id = Invoices.inv_cst_id SET inv_total = 999', + 'cphalcon:unit/Mvc/Model/Query/Phql/Update/CombinationTest#5' => 'UPDATE Invoices AS i INNER JOIN Customers AS c ON c.cst_id = i.inv_cst_id SET i.inv_total = 999 WHERE c.cst_id = 1', + 'cphalcon:unit/Mvc/Model/Query/Phql/Update/CombinationTest#6' => 'UPDATE Invoices INNER JOIN Customers ON Customers.cst_id = Invoices.inv_cst_id SET inv_total = 999 WHERE Customers.cst_id = 1', + 'cphalcon:unit/Mvc/Model/Query/Phql/Update/CombinationTest#7' => 'UPDATE Invoices INNER JOIN Customers ON Customers.cst_id = Invoices.inv_cst_id SET inv_total = 999 WHERE Customers.cst_id = 1 LIMIT 10', + 'cphalcon:unit/Mvc/Model/Query/Phql/Update/CombinationTest#8' => 'UPDATE Invoices INNER JOIN Customers ON Customers.cst_id = Invoices.inv_cst_id SET inv_total = :total: WHERE Customers.cst_id = :custId:', + 'cphalcon:unit/Mvc/Model/Query/Phql/Update/CombinationTest#9' => 'UPDATE Invoices LEFT JOIN Customers ON Customers.cst_id = Invoices.inv_cst_id SET inv_total = 999 WHERE Customers.cst_id = 1', + 'cphalcon:unit/Mvc/Model/Query/Phql/Update/CombinationTest#10' => 'UPDATE Invoices INNER JOIN Customers ON Customers.cst_id = Invoices.inv_cst_id INNER JOIN Orders ON Orders.ord_cst_id = Customers.cst_id SET inv_total = 999 WHERE Orders.ord_id = 1', + 'cphalcon:unit/Mvc/Model/Query/Phql/Update/CombinationTest#11' => 'UPDATE Invoices SET inv_total = NULL WHERE inv_status_flag = 0', + 'cphalcon:unit/Mvc/Model/Query/Phql/Update/CombinationTest#12' => 'UPDATE Invoices SET inv_status_flag = 0 LIMIT 10', + 'cphalcon:unit/Mvc/Model/Query/Phql/Update/CombinationTest#13' => 'UPDATE Invoices SET inv_status_flag = ?0, inv_total = ?1 WHERE inv_id = ?2', + 'cphalcon:unit/Mvc/Model/Query/Phql/Update/CombinationTest#14' => 'UPDATE Invoices SET inv_status_flag = 1, inv_title = \'Updated\' WHERE inv_id = 1', + 'cphalcon:unit/Mvc/Model/Query/Phql/Update/CombinationTest#15' => 'UPDATE Invoices SET inv_status_flag = 1 WHERE inv_id = 1', + 'cphalcon:unit/Mvc/Model/Query/Phql/Update/CombinationTest#16' => 'UPDATE Invoices SET inv_status_flag = 1 WHERE inv_id IN (1, 2, 3)', + 'cphalcon:unit/Mvc/Model/Query/Phql/Update/CombinationTest#17' => 'UPDATE Invoices SET inv_title = :title: WHERE inv_id = :id:', + 'cphalcon:unit/Mvc/Model/Query/Phql/Update/CombinationTest#18' => 'UPDATE Invoices SET inv_status_flag = TRUE WHERE inv_id = 1', + 'cphalcon:unit/Mvc/Model/Query/Phql/Update/CombinationTest#19' => 'UPDATE Invoices SET inv_title = UPPER(inv_title) WHERE inv_status_flag = 1', + 'cphalcon:unit/Mvc/Model/Query/Phql/Update/CombinationTest#20' => 'UPDATE Invoices SET inv_status_flag = 1 WHERE inv_cst_id = 1 AND inv_total > 100 AND inv_status_flag = 0', + 'phalcon:database/Db/Dialect/DescribeReferencesTest#1' => 'SELECT c.relname AS TABLE_NAME, a.attname AS COLUMN_NAME, con.conname AS CONSTRAINT_NAME, current_database() AS REFERENCED_TABLE_SCHEMA, fc.relname AS REFERENCED_TABLE_NAME, fa.attname AS REFERENCED_COLUMN_NAME, CASE con.confupdtype WHEN \'c\' THEN \'CASCADE\' WHEN \'n\' THEN \'SET NULL\' WHEN \'d\' THEN \'SET DEFAULT\' WHEN \'r\' THEN \'RESTRICT\' WHEN \'a\' THEN \'NO ACTION\' END AS UPDATE_RULE, CASE con.confdeltype WHEN \'c\' THEN \'CASCADE\' WHEN \'n\' THEN \'SET NULL\' WHEN \'d\' THEN \'SET DEFAULT\' WHEN \'r\' THEN \'RESTRICT\' WHEN \'a\' THEN \'NO ACTION\' END AS DELETE_RULE FROM pg_catalog.pg_constraint AS con JOIN pg_catalog.pg_class AS c ON c.oid = con.conrelid JOIN pg_catalog.pg_namespace AS n ON n.oid = c.relnamespace JOIN pg_catalog.pg_class AS fc ON fc.oid = con.confrelid CROSS JOIN LATERAL unnest(con.conkey, con.confkey) WITH ORDINALITY AS k(colnum, refcolnum, colpos) JOIN pg_catalog.pg_attribute AS a ON a.attrelid = con.conrelid AND a.attnum = k.colnum JOIN pg_catalog.pg_attribute AS fa ON fa.attrelid = con.confrelid AND fa.attnum = k.refcolnum WHERE con.contype = \'f\' AND n.nspname = \'schema\' AND c.relname = \'table\' ORDER BY con.conname, k.colpos', + 'phalcon:database/Db/Dialect/DescribeReferencesTest#2' => 'SELECT c.relname AS TABLE_NAME, a.attname AS COLUMN_NAME, con.conname AS CONSTRAINT_NAME, current_database() AS REFERENCED_TABLE_SCHEMA, fc.relname AS REFERENCED_TABLE_NAME, fa.attname AS REFERENCED_COLUMN_NAME, CASE con.confupdtype WHEN \'c\' THEN \'CASCADE\' WHEN \'n\' THEN \'SET NULL\' WHEN \'d\' THEN \'SET DEFAULT\' WHEN \'r\' THEN \'RESTRICT\' WHEN \'a\' THEN \'NO ACTION\' END AS UPDATE_RULE, CASE con.confdeltype WHEN \'c\' THEN \'CASCADE\' WHEN \'n\' THEN \'SET NULL\' WHEN \'d\' THEN \'SET DEFAULT\' WHEN \'r\' THEN \'RESTRICT\' WHEN \'a\' THEN \'NO ACTION\' END AS DELETE_RULE FROM pg_catalog.pg_constraint AS con JOIN pg_catalog.pg_class AS c ON c.oid = con.conrelid JOIN pg_catalog.pg_namespace AS n ON n.oid = c.relnamespace JOIN pg_catalog.pg_class AS fc ON fc.oid = con.confrelid CROSS JOIN LATERAL unnest(con.conkey, con.confkey) WITH ORDINALITY AS k(colnum, refcolnum, colpos) JOIN pg_catalog.pg_attribute AS a ON a.attrelid = con.conrelid AND a.attnum = k.colnum JOIN pg_catalog.pg_attribute AS fa ON fa.attrelid = con.confrelid AND fa.attnum = k.refcolnum WHERE con.contype = \'f\' AND n.nspname = \'public\' AND c.relname = \'table\' ORDER BY con.conname, k.colpos', + 'phql:ParserTest#1' => 'SELECT 1.5 FROM Invoices', + 'phql:ParserTest#2' => 'SELECT FALSE FROM Invoices', + 'phql:ParserTest#3' => 'SELECT 0xFF FROM Invoices', + 'phql:ParserTest#4' => 'SELECT 1 FROM Invoices', + 'phql:ParserTest#5' => 'SELECT \'hello\' FROM Invoices', + 'phql:ParserTest#6' => 'SELECT TRUE FROM Invoices', + 'phql:ParserTest#7' => 'SELECT FROM Robots', + 'phql:ParserTest#8' => 'SELECT * FROM Robots WHERE (((', + 'phql:ParserTest#9' => 'SELECT : FROM Invoices', + 'phql:Phql/Select/AggregateTest#1' => 'SELECT AVG(inv_total) AS average FROM [Phalcon\\Tests\\Models\\Invoices]', + 'phql:Phql/Select/BetweenTest#1' => 'SELECT column_name FROM table_name WHERE column_name BETWEEN value1 AND value2', + 'phql:Phql/Select/BetweenTest#2' => 'SELECT Id, ProductName, UnitPrice FROM Product WHERE UnitPrice NOT BETWEEN 5 AND 100', + 'phql:Phql/Select/BracketsWithSpaceNameTest#1' => 'SELECT People.firstName AS [First Name], People.lastName AS [Last Name] FROM People', + 'phql:Phql/Select/CustomOperatorsTest#1' => 'SELECT * FROM Invoices WHERE inv_title || \'a\' = \'b\'', + 'phql:Phql/Select/CustomOperatorsTest#2' => 'SELECT * FROM Invoices WHERE inv_title ', + 'phql:Phql/Select/CustomOperatorsTest#3' => 'SELECT inv_meta -> \'currency\' AS currency FROM Invoices', + 'phql:Phql/Select/CustomOperatorsTest#4' => 'SELECT * FROM Invoices WHERE inv_title ->> \'a\' = \'b\'', + 'phql:Phql/Select/JoinTest#1' => 'SELECT i.inv_id, Customers.name FROM Invoices AS i INNER JOIN Customers ON i.inv_cst_id = Customers.id', + 'phql:Phql/Select/LimitTest#1' => 'SELECT r.* FROM Robots r LIMIT 10', +); diff --git a/tests/fixtures/parity/precedence.json b/tests/fixtures/parity/precedence.json new file mode 100644 index 0000000..7bea693 --- /dev/null +++ b/tests/fixtures/parity/precedence.json @@ -0,0 +1,835 @@ +{ + "generator": "ext-phalcon 5.23.0", + "cases": { + "single AGAINST": {"source":"SELECT a AGAINST b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "single BETWEEN": {"source":"SELECT a BETWEEN b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":331,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":331,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "single NOT BETWEEN": {"source":"SELECT a NOT BETWEEN b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":332,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":332,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "single =": {"source":"SELECT a = b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":61,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":61,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "single !=": {"source":"SELECT a != b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":270,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":270,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "single <>": {"source":"SELECT a <> b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":270,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":270,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "single <": {"source":"SELECT a < b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":60,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":60,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "single >": {"source":"SELECT a > b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":62,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":62,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "single >=": {"source":"SELECT a >= b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":272,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":272,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "single <=": {"source":"SELECT a <= b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":271,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":271,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "single @@": {"source":"SELECT a @@ b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":401,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":401,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "single @>": {"source":"SELECT a @> b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":402,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":402,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "single <@": {"source":"SELECT a <@ b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":403,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":403,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "single &&": {"source":"SELECT a && b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":404,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":404,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "single AND": {"source":"SELECT a AND b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":266,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":266,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "single OR": {"source":"SELECT a OR b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":267,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":267,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "single LIKE": {"source":"SELECT a LIKE b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":268,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":268,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "single ILIKE": {"source":"SELECT a ILIKE b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":275,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":275,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "single NOT LIKE": {"source":"SELECT a NOT LIKE b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "single NOT ILIKE": {"source":"SELECT a NOT ILIKE b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":357,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":357,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "single &": {"source":"SELECT a & b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":38,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":38,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "single |": {"source":"SELECT a | b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":124,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":124,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "single ^": {"source":"SELECT a ^ b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":94,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":94,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "single /": {"source":"SELECT a / b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":47,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":47,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "single *": {"source":"SELECT a * b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":42,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":42,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "single %": {"source":"SELECT a % b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":37,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":37,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "single +": {"source":"SELECT a + b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "single -": {"source":"SELECT a - b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":45,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":45,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "single ||": {"source":"SELECT a || b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":405,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":405,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "single ->": {"source":"SELECT a -> b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":406,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":406,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "single ->>": {"source":"SELECT a ->> b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":416,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":416,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "single #>": {"source":"SELECT a #> b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":417,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":417,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "single #>>": {"source":"SELECT a #>> b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":418,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":418,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair AGAINST AGAINST": {"source":"SELECT a AGAINST b AGAINST c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair AGAINST BETWEEN": {"source":"SELECT a AGAINST b BETWEEN c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":331,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":331,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair AGAINST NOT BETWEEN": {"source":"SELECT a AGAINST b NOT BETWEEN c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":332,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":332,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair AGAINST =": {"source":"SELECT a AGAINST b = c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":61,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":61,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair AGAINST @@": {"source":"SELECT a AGAINST b @@ c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":401,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":401,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair AGAINST AND": {"source":"SELECT a AGAINST b AND c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":266,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":266,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair AGAINST OR": {"source":"SELECT a AGAINST b OR c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":267,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":267,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair AGAINST LIKE": {"source":"SELECT a AGAINST b LIKE c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":268,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":268,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair AGAINST NOT LIKE": {"source":"SELECT a AGAINST b NOT LIKE c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair AGAINST ILIKE": {"source":"SELECT a AGAINST b ILIKE c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":275,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":275,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair AGAINST NOT ILIKE": {"source":"SELECT a AGAINST b NOT ILIKE c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":357,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":357,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair AGAINST &": {"source":"SELECT a AGAINST b & c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":38,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":38,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair AGAINST ^": {"source":"SELECT a AGAINST b ^ c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":94,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":94,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair AGAINST *": {"source":"SELECT a AGAINST b * c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":42,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":42,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair AGAINST %": {"source":"SELECT a AGAINST b % c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":37,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":37,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair AGAINST +": {"source":"SELECT a AGAINST b + c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":43,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":43,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair AGAINST -": {"source":"SELECT a AGAINST b - c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":45,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":45,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair AGAINST ||": {"source":"SELECT a AGAINST b || c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":405,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":405,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair AGAINST ->": {"source":"SELECT a AGAINST b -> c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":406,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":406,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair AGAINST #>>": {"source":"SELECT a AGAINST b #>> c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":418,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":418,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair BETWEEN AGAINST": {"source":"SELECT a BETWEEN b AGAINST c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":276,"left":{"type":331,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":276,"left":{"type":331,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair BETWEEN BETWEEN": {"source":"SELECT a BETWEEN b BETWEEN c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":331,"left":{"type":331,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":331,"left":{"type":331,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair BETWEEN NOT BETWEEN": {"source":"SELECT a BETWEEN b NOT BETWEEN c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":332,"left":{"type":331,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":332,"left":{"type":331,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair BETWEEN =": {"source":"SELECT a BETWEEN b = c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":331,"left":{"type":355,"name":"a"},"right":{"type":61,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":331,"left":{"type":355,"name":"a"},"right":{"type":61,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair BETWEEN @@": {"source":"SELECT a BETWEEN b @@ c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":331,"left":{"type":355,"name":"a"},"right":{"type":401,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":331,"left":{"type":355,"name":"a"},"right":{"type":401,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair BETWEEN AND": {"source":"SELECT a BETWEEN b AND c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":331,"left":{"type":355,"name":"a"},"right":{"type":266,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":331,"left":{"type":355,"name":"a"},"right":{"type":266,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair BETWEEN OR": {"source":"SELECT a BETWEEN b OR c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":331,"left":{"type":355,"name":"a"},"right":{"type":267,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":331,"left":{"type":355,"name":"a"},"right":{"type":267,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair BETWEEN LIKE": {"source":"SELECT a BETWEEN b LIKE c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":331,"left":{"type":355,"name":"a"},"right":{"type":268,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":331,"left":{"type":355,"name":"a"},"right":{"type":268,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair BETWEEN NOT LIKE": {"source":"SELECT a BETWEEN b NOT LIKE c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":331,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":331,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair BETWEEN ILIKE": {"source":"SELECT a BETWEEN b ILIKE c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":331,"left":{"type":355,"name":"a"},"right":{"type":275,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":331,"left":{"type":355,"name":"a"},"right":{"type":275,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair BETWEEN NOT ILIKE": {"source":"SELECT a BETWEEN b NOT ILIKE c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":331,"left":{"type":355,"name":"a"},"right":{"type":357,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":331,"left":{"type":355,"name":"a"},"right":{"type":357,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair BETWEEN &": {"source":"SELECT a BETWEEN b & c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":331,"left":{"type":355,"name":"a"},"right":{"type":38,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":331,"left":{"type":355,"name":"a"},"right":{"type":38,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair BETWEEN ^": {"source":"SELECT a BETWEEN b ^ c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":331,"left":{"type":355,"name":"a"},"right":{"type":94,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":331,"left":{"type":355,"name":"a"},"right":{"type":94,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair BETWEEN *": {"source":"SELECT a BETWEEN b * c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":331,"left":{"type":355,"name":"a"},"right":{"type":42,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":331,"left":{"type":355,"name":"a"},"right":{"type":42,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair BETWEEN %": {"source":"SELECT a BETWEEN b % c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":331,"left":{"type":355,"name":"a"},"right":{"type":37,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":331,"left":{"type":355,"name":"a"},"right":{"type":37,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair BETWEEN +": {"source":"SELECT a BETWEEN b + c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":331,"left":{"type":355,"name":"a"},"right":{"type":43,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":331,"left":{"type":355,"name":"a"},"right":{"type":43,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair BETWEEN -": {"source":"SELECT a BETWEEN b - c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":331,"left":{"type":355,"name":"a"},"right":{"type":45,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":331,"left":{"type":355,"name":"a"},"right":{"type":45,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair BETWEEN ||": {"source":"SELECT a BETWEEN b || c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":331,"left":{"type":355,"name":"a"},"right":{"type":405,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":331,"left":{"type":355,"name":"a"},"right":{"type":405,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair BETWEEN ->": {"source":"SELECT a BETWEEN b -> c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":331,"left":{"type":355,"name":"a"},"right":{"type":406,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":331,"left":{"type":355,"name":"a"},"right":{"type":406,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair BETWEEN #>>": {"source":"SELECT a BETWEEN b #>> c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":331,"left":{"type":355,"name":"a"},"right":{"type":418,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":331,"left":{"type":355,"name":"a"},"right":{"type":418,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair NOT BETWEEN AGAINST": {"source":"SELECT a NOT BETWEEN b AGAINST c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":276,"left":{"type":332,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":276,"left":{"type":332,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair NOT BETWEEN BETWEEN": {"source":"SELECT a NOT BETWEEN b BETWEEN c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":331,"left":{"type":332,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":331,"left":{"type":332,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair NOT BETWEEN NOT BETWEEN": {"source":"SELECT a NOT BETWEEN b NOT BETWEEN c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":332,"left":{"type":332,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":332,"left":{"type":332,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair NOT BETWEEN =": {"source":"SELECT a NOT BETWEEN b = c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":332,"left":{"type":355,"name":"a"},"right":{"type":61,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":332,"left":{"type":355,"name":"a"},"right":{"type":61,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair NOT BETWEEN @@": {"source":"SELECT a NOT BETWEEN b @@ c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":332,"left":{"type":355,"name":"a"},"right":{"type":401,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":332,"left":{"type":355,"name":"a"},"right":{"type":401,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair NOT BETWEEN AND": {"source":"SELECT a NOT BETWEEN b AND c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":332,"left":{"type":355,"name":"a"},"right":{"type":266,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":332,"left":{"type":355,"name":"a"},"right":{"type":266,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair NOT BETWEEN OR": {"source":"SELECT a NOT BETWEEN b OR c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":332,"left":{"type":355,"name":"a"},"right":{"type":267,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":332,"left":{"type":355,"name":"a"},"right":{"type":267,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair NOT BETWEEN LIKE": {"source":"SELECT a NOT BETWEEN b LIKE c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":332,"left":{"type":355,"name":"a"},"right":{"type":268,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":332,"left":{"type":355,"name":"a"},"right":{"type":268,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair NOT BETWEEN NOT LIKE": {"source":"SELECT a NOT BETWEEN b NOT LIKE c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":332,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":332,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair NOT BETWEEN ILIKE": {"source":"SELECT a NOT BETWEEN b ILIKE c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":332,"left":{"type":355,"name":"a"},"right":{"type":275,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":332,"left":{"type":355,"name":"a"},"right":{"type":275,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair NOT BETWEEN NOT ILIKE": {"source":"SELECT a NOT BETWEEN b NOT ILIKE c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":332,"left":{"type":355,"name":"a"},"right":{"type":357,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":332,"left":{"type":355,"name":"a"},"right":{"type":357,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair NOT BETWEEN &": {"source":"SELECT a NOT BETWEEN b & c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":332,"left":{"type":355,"name":"a"},"right":{"type":38,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":332,"left":{"type":355,"name":"a"},"right":{"type":38,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair NOT BETWEEN ^": {"source":"SELECT a NOT BETWEEN b ^ c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":332,"left":{"type":355,"name":"a"},"right":{"type":94,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":332,"left":{"type":355,"name":"a"},"right":{"type":94,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair NOT BETWEEN *": {"source":"SELECT a NOT BETWEEN b * c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":332,"left":{"type":355,"name":"a"},"right":{"type":42,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":332,"left":{"type":355,"name":"a"},"right":{"type":42,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair NOT BETWEEN %": {"source":"SELECT a NOT BETWEEN b % c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":332,"left":{"type":355,"name":"a"},"right":{"type":37,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":332,"left":{"type":355,"name":"a"},"right":{"type":37,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair NOT BETWEEN +": {"source":"SELECT a NOT BETWEEN b + c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":332,"left":{"type":355,"name":"a"},"right":{"type":43,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":332,"left":{"type":355,"name":"a"},"right":{"type":43,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair NOT BETWEEN -": {"source":"SELECT a NOT BETWEEN b - c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":332,"left":{"type":355,"name":"a"},"right":{"type":45,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":332,"left":{"type":355,"name":"a"},"right":{"type":45,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair NOT BETWEEN ||": {"source":"SELECT a NOT BETWEEN b || c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":332,"left":{"type":355,"name":"a"},"right":{"type":405,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":332,"left":{"type":355,"name":"a"},"right":{"type":405,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair NOT BETWEEN ->": {"source":"SELECT a NOT BETWEEN b -> c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":332,"left":{"type":355,"name":"a"},"right":{"type":406,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":332,"left":{"type":355,"name":"a"},"right":{"type":406,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair NOT BETWEEN #>>": {"source":"SELECT a NOT BETWEEN b #>> c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":332,"left":{"type":355,"name":"a"},"right":{"type":418,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":332,"left":{"type":355,"name":"a"},"right":{"type":418,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair = AGAINST": {"source":"SELECT a = b AGAINST c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":276,"left":{"type":61,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":276,"left":{"type":61,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair = BETWEEN": {"source":"SELECT a = b BETWEEN c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":331,"left":{"type":61,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":331,"left":{"type":61,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair = NOT BETWEEN": {"source":"SELECT a = b NOT BETWEEN c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":332,"left":{"type":61,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":332,"left":{"type":61,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair = =": {"source":"SELECT a = b = c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":61,"left":{"type":61,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":61,"left":{"type":61,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair = @@": {"source":"SELECT a = b @@ c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":401,"left":{"type":61,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":401,"left":{"type":61,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair = AND": {"source":"SELECT a = b AND c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":61,"left":{"type":355,"name":"a"},"right":{"type":266,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":61,"left":{"type":355,"name":"a"},"right":{"type":266,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair = OR": {"source":"SELECT a = b OR c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":61,"left":{"type":355,"name":"a"},"right":{"type":267,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":61,"left":{"type":355,"name":"a"},"right":{"type":267,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair = LIKE": {"source":"SELECT a = b LIKE c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":61,"left":{"type":355,"name":"a"},"right":{"type":268,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":61,"left":{"type":355,"name":"a"},"right":{"type":268,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair = NOT LIKE": {"source":"SELECT a = b NOT LIKE c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":61,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":61,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair = ILIKE": {"source":"SELECT a = b ILIKE c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":61,"left":{"type":355,"name":"a"},"right":{"type":275,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":61,"left":{"type":355,"name":"a"},"right":{"type":275,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair = NOT ILIKE": {"source":"SELECT a = b NOT ILIKE c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":61,"left":{"type":355,"name":"a"},"right":{"type":357,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":61,"left":{"type":355,"name":"a"},"right":{"type":357,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair = &": {"source":"SELECT a = b & c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":61,"left":{"type":355,"name":"a"},"right":{"type":38,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":61,"left":{"type":355,"name":"a"},"right":{"type":38,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair = ^": {"source":"SELECT a = b ^ c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":61,"left":{"type":355,"name":"a"},"right":{"type":94,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":61,"left":{"type":355,"name":"a"},"right":{"type":94,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair = *": {"source":"SELECT a = b * c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":61,"left":{"type":355,"name":"a"},"right":{"type":42,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":61,"left":{"type":355,"name":"a"},"right":{"type":42,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair = %": {"source":"SELECT a = b % c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":61,"left":{"type":355,"name":"a"},"right":{"type":37,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":61,"left":{"type":355,"name":"a"},"right":{"type":37,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair = +": {"source":"SELECT a = b + c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":61,"left":{"type":355,"name":"a"},"right":{"type":43,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":61,"left":{"type":355,"name":"a"},"right":{"type":43,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair = -": {"source":"SELECT a = b - c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":61,"left":{"type":355,"name":"a"},"right":{"type":45,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":61,"left":{"type":355,"name":"a"},"right":{"type":45,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair = ||": {"source":"SELECT a = b || c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":61,"left":{"type":355,"name":"a"},"right":{"type":405,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":61,"left":{"type":355,"name":"a"},"right":{"type":405,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair = ->": {"source":"SELECT a = b -> c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":61,"left":{"type":355,"name":"a"},"right":{"type":406,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":61,"left":{"type":355,"name":"a"},"right":{"type":406,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair = #>>": {"source":"SELECT a = b #>> c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":61,"left":{"type":355,"name":"a"},"right":{"type":418,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":61,"left":{"type":355,"name":"a"},"right":{"type":418,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair @@ AGAINST": {"source":"SELECT a @@ b AGAINST c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":276,"left":{"type":401,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":276,"left":{"type":401,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair @@ BETWEEN": {"source":"SELECT a @@ b BETWEEN c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":331,"left":{"type":401,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":331,"left":{"type":401,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair @@ NOT BETWEEN": {"source":"SELECT a @@ b NOT BETWEEN c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":332,"left":{"type":401,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":332,"left":{"type":401,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair @@ =": {"source":"SELECT a @@ b = c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":61,"left":{"type":401,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":61,"left":{"type":401,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair @@ @@": {"source":"SELECT a @@ b @@ c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":401,"left":{"type":401,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":401,"left":{"type":401,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair @@ AND": {"source":"SELECT a @@ b AND c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":401,"left":{"type":355,"name":"a"},"right":{"type":266,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":401,"left":{"type":355,"name":"a"},"right":{"type":266,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair @@ OR": {"source":"SELECT a @@ b OR c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":401,"left":{"type":355,"name":"a"},"right":{"type":267,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":401,"left":{"type":355,"name":"a"},"right":{"type":267,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair @@ LIKE": {"source":"SELECT a @@ b LIKE c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":401,"left":{"type":355,"name":"a"},"right":{"type":268,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":401,"left":{"type":355,"name":"a"},"right":{"type":268,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair @@ NOT LIKE": {"source":"SELECT a @@ b NOT LIKE c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":401,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":401,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair @@ ILIKE": {"source":"SELECT a @@ b ILIKE c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":401,"left":{"type":355,"name":"a"},"right":{"type":275,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":401,"left":{"type":355,"name":"a"},"right":{"type":275,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair @@ NOT ILIKE": {"source":"SELECT a @@ b NOT ILIKE c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":401,"left":{"type":355,"name":"a"},"right":{"type":357,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":401,"left":{"type":355,"name":"a"},"right":{"type":357,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair @@ &": {"source":"SELECT a @@ b & c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":401,"left":{"type":355,"name":"a"},"right":{"type":38,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":401,"left":{"type":355,"name":"a"},"right":{"type":38,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair @@ ^": {"source":"SELECT a @@ b ^ c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":401,"left":{"type":355,"name":"a"},"right":{"type":94,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":401,"left":{"type":355,"name":"a"},"right":{"type":94,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair @@ *": {"source":"SELECT a @@ b * c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":401,"left":{"type":355,"name":"a"},"right":{"type":42,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":401,"left":{"type":355,"name":"a"},"right":{"type":42,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair @@ %": {"source":"SELECT a @@ b % c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":401,"left":{"type":355,"name":"a"},"right":{"type":37,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":401,"left":{"type":355,"name":"a"},"right":{"type":37,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair @@ +": {"source":"SELECT a @@ b + c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":401,"left":{"type":355,"name":"a"},"right":{"type":43,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":401,"left":{"type":355,"name":"a"},"right":{"type":43,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair @@ -": {"source":"SELECT a @@ b - c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":401,"left":{"type":355,"name":"a"},"right":{"type":45,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":401,"left":{"type":355,"name":"a"},"right":{"type":45,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair @@ ||": {"source":"SELECT a @@ b || c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":401,"left":{"type":355,"name":"a"},"right":{"type":405,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":401,"left":{"type":355,"name":"a"},"right":{"type":405,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair @@ ->": {"source":"SELECT a @@ b -> c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":401,"left":{"type":355,"name":"a"},"right":{"type":406,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":401,"left":{"type":355,"name":"a"},"right":{"type":406,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair @@ #>>": {"source":"SELECT a @@ b #>> c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":401,"left":{"type":355,"name":"a"},"right":{"type":418,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":401,"left":{"type":355,"name":"a"},"right":{"type":418,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair AND AGAINST": {"source":"SELECT a AND b AGAINST c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":276,"left":{"type":266,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":276,"left":{"type":266,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair AND BETWEEN": {"source":"SELECT a AND b BETWEEN c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":331,"left":{"type":266,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":331,"left":{"type":266,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair AND NOT BETWEEN": {"source":"SELECT a AND b NOT BETWEEN c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":332,"left":{"type":266,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":332,"left":{"type":266,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair AND =": {"source":"SELECT a AND b = c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":61,"left":{"type":266,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":61,"left":{"type":266,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair AND @@": {"source":"SELECT a AND b @@ c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":401,"left":{"type":266,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":401,"left":{"type":266,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair AND AND": {"source":"SELECT a AND b AND c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":266,"left":{"type":266,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":266,"left":{"type":266,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair AND OR": {"source":"SELECT a AND b OR c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":267,"left":{"type":266,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":267,"left":{"type":266,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair AND LIKE": {"source":"SELECT a AND b LIKE c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":266,"left":{"type":355,"name":"a"},"right":{"type":268,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":266,"left":{"type":355,"name":"a"},"right":{"type":268,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair AND NOT LIKE": {"source":"SELECT a AND b NOT LIKE c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":266,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":266,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair AND ILIKE": {"source":"SELECT a AND b ILIKE c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":266,"left":{"type":355,"name":"a"},"right":{"type":275,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":266,"left":{"type":355,"name":"a"},"right":{"type":275,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair AND NOT ILIKE": {"source":"SELECT a AND b NOT ILIKE c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":266,"left":{"type":355,"name":"a"},"right":{"type":357,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":266,"left":{"type":355,"name":"a"},"right":{"type":357,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair AND &": {"source":"SELECT a AND b & c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":266,"left":{"type":355,"name":"a"},"right":{"type":38,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":266,"left":{"type":355,"name":"a"},"right":{"type":38,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair AND ^": {"source":"SELECT a AND b ^ c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":266,"left":{"type":355,"name":"a"},"right":{"type":94,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":266,"left":{"type":355,"name":"a"},"right":{"type":94,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair AND *": {"source":"SELECT a AND b * c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":266,"left":{"type":355,"name":"a"},"right":{"type":42,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":266,"left":{"type":355,"name":"a"},"right":{"type":42,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair AND %": {"source":"SELECT a AND b % c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":266,"left":{"type":355,"name":"a"},"right":{"type":37,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":266,"left":{"type":355,"name":"a"},"right":{"type":37,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair AND +": {"source":"SELECT a AND b + c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":266,"left":{"type":355,"name":"a"},"right":{"type":43,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":266,"left":{"type":355,"name":"a"},"right":{"type":43,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair AND -": {"source":"SELECT a AND b - c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":266,"left":{"type":355,"name":"a"},"right":{"type":45,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":266,"left":{"type":355,"name":"a"},"right":{"type":45,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair AND ||": {"source":"SELECT a AND b || c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":266,"left":{"type":355,"name":"a"},"right":{"type":405,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":266,"left":{"type":355,"name":"a"},"right":{"type":405,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair AND ->": {"source":"SELECT a AND b -> c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":266,"left":{"type":355,"name":"a"},"right":{"type":406,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":266,"left":{"type":355,"name":"a"},"right":{"type":406,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair AND #>>": {"source":"SELECT a AND b #>> c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":266,"left":{"type":355,"name":"a"},"right":{"type":418,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":266,"left":{"type":355,"name":"a"},"right":{"type":418,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair OR AGAINST": {"source":"SELECT a OR b AGAINST c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":276,"left":{"type":267,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":276,"left":{"type":267,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair OR BETWEEN": {"source":"SELECT a OR b BETWEEN c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":331,"left":{"type":267,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":331,"left":{"type":267,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair OR NOT BETWEEN": {"source":"SELECT a OR b NOT BETWEEN c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":332,"left":{"type":267,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":332,"left":{"type":267,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair OR =": {"source":"SELECT a OR b = c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":61,"left":{"type":267,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":61,"left":{"type":267,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair OR @@": {"source":"SELECT a OR b @@ c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":401,"left":{"type":267,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":401,"left":{"type":267,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair OR AND": {"source":"SELECT a OR b AND c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":266,"left":{"type":267,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":266,"left":{"type":267,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair OR OR": {"source":"SELECT a OR b OR c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":267,"left":{"type":267,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":267,"left":{"type":267,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair OR LIKE": {"source":"SELECT a OR b LIKE c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":267,"left":{"type":355,"name":"a"},"right":{"type":268,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":267,"left":{"type":355,"name":"a"},"right":{"type":268,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair OR NOT LIKE": {"source":"SELECT a OR b NOT LIKE c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":267,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":267,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair OR ILIKE": {"source":"SELECT a OR b ILIKE c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":267,"left":{"type":355,"name":"a"},"right":{"type":275,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":267,"left":{"type":355,"name":"a"},"right":{"type":275,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair OR NOT ILIKE": {"source":"SELECT a OR b NOT ILIKE c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":267,"left":{"type":355,"name":"a"},"right":{"type":357,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":267,"left":{"type":355,"name":"a"},"right":{"type":357,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair OR &": {"source":"SELECT a OR b & c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":267,"left":{"type":355,"name":"a"},"right":{"type":38,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":267,"left":{"type":355,"name":"a"},"right":{"type":38,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair OR ^": {"source":"SELECT a OR b ^ c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":267,"left":{"type":355,"name":"a"},"right":{"type":94,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":267,"left":{"type":355,"name":"a"},"right":{"type":94,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair OR *": {"source":"SELECT a OR b * c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":267,"left":{"type":355,"name":"a"},"right":{"type":42,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":267,"left":{"type":355,"name":"a"},"right":{"type":42,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair OR %": {"source":"SELECT a OR b % c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":267,"left":{"type":355,"name":"a"},"right":{"type":37,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":267,"left":{"type":355,"name":"a"},"right":{"type":37,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair OR +": {"source":"SELECT a OR b + c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":267,"left":{"type":355,"name":"a"},"right":{"type":43,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":267,"left":{"type":355,"name":"a"},"right":{"type":43,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair OR -": {"source":"SELECT a OR b - c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":267,"left":{"type":355,"name":"a"},"right":{"type":45,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":267,"left":{"type":355,"name":"a"},"right":{"type":45,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair OR ||": {"source":"SELECT a OR b || c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":267,"left":{"type":355,"name":"a"},"right":{"type":405,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":267,"left":{"type":355,"name":"a"},"right":{"type":405,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair OR ->": {"source":"SELECT a OR b -> c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":267,"left":{"type":355,"name":"a"},"right":{"type":406,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":267,"left":{"type":355,"name":"a"},"right":{"type":406,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair OR #>>": {"source":"SELECT a OR b #>> c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":267,"left":{"type":355,"name":"a"},"right":{"type":418,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":267,"left":{"type":355,"name":"a"},"right":{"type":418,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair LIKE AGAINST": {"source":"SELECT a LIKE b AGAINST c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":276,"left":{"type":268,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":276,"left":{"type":268,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair LIKE BETWEEN": {"source":"SELECT a LIKE b BETWEEN c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":331,"left":{"type":268,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":331,"left":{"type":268,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair LIKE NOT BETWEEN": {"source":"SELECT a LIKE b NOT BETWEEN c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":332,"left":{"type":268,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":332,"left":{"type":268,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair LIKE =": {"source":"SELECT a LIKE b = c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":61,"left":{"type":268,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":61,"left":{"type":268,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair LIKE @@": {"source":"SELECT a LIKE b @@ c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":401,"left":{"type":268,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":401,"left":{"type":268,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair LIKE AND": {"source":"SELECT a LIKE b AND c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":266,"left":{"type":268,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":266,"left":{"type":268,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair LIKE OR": {"source":"SELECT a LIKE b OR c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":267,"left":{"type":268,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":267,"left":{"type":268,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair LIKE LIKE": {"source":"SELECT a LIKE b LIKE c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":268,"left":{"type":268,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":268,"left":{"type":268,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair LIKE NOT LIKE": {"source":"SELECT a LIKE b NOT LIKE c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":268,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":268,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair LIKE ILIKE": {"source":"SELECT a LIKE b ILIKE c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":275,"left":{"type":268,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":275,"left":{"type":268,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair LIKE NOT ILIKE": {"source":"SELECT a LIKE b NOT ILIKE c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":268,"left":{"type":355,"name":"a"},"right":{"type":357,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":268,"left":{"type":355,"name":"a"},"right":{"type":357,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair LIKE &": {"source":"SELECT a LIKE b & c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":268,"left":{"type":355,"name":"a"},"right":{"type":38,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":268,"left":{"type":355,"name":"a"},"right":{"type":38,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair LIKE ^": {"source":"SELECT a LIKE b ^ c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":268,"left":{"type":355,"name":"a"},"right":{"type":94,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":268,"left":{"type":355,"name":"a"},"right":{"type":94,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair LIKE *": {"source":"SELECT a LIKE b * c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":268,"left":{"type":355,"name":"a"},"right":{"type":42,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":268,"left":{"type":355,"name":"a"},"right":{"type":42,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair LIKE %": {"source":"SELECT a LIKE b % c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":268,"left":{"type":355,"name":"a"},"right":{"type":37,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":268,"left":{"type":355,"name":"a"},"right":{"type":37,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair LIKE +": {"source":"SELECT a LIKE b + c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":268,"left":{"type":355,"name":"a"},"right":{"type":43,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":268,"left":{"type":355,"name":"a"},"right":{"type":43,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair LIKE -": {"source":"SELECT a LIKE b - c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":268,"left":{"type":355,"name":"a"},"right":{"type":45,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":268,"left":{"type":355,"name":"a"},"right":{"type":45,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair LIKE ||": {"source":"SELECT a LIKE b || c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":268,"left":{"type":355,"name":"a"},"right":{"type":405,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":268,"left":{"type":355,"name":"a"},"right":{"type":405,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair LIKE ->": {"source":"SELECT a LIKE b -> c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":268,"left":{"type":355,"name":"a"},"right":{"type":406,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":268,"left":{"type":355,"name":"a"},"right":{"type":406,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair LIKE #>>": {"source":"SELECT a LIKE b #>> c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":268,"left":{"type":355,"name":"a"},"right":{"type":418,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":268,"left":{"type":355,"name":"a"},"right":{"type":418,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair NOT LIKE AGAINST": {"source":"SELECT a NOT LIKE b AGAINST c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":276,"left":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":276,"left":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair NOT LIKE BETWEEN": {"source":"SELECT a NOT LIKE b BETWEEN c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":331,"left":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":331,"left":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair NOT LIKE NOT BETWEEN": {"source":"SELECT a NOT LIKE b NOT BETWEEN c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":332,"left":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":332,"left":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair NOT LIKE =": {"source":"SELECT a NOT LIKE b = c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":61,"left":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":61,"left":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair NOT LIKE @@": {"source":"SELECT a NOT LIKE b @@ c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":401,"left":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":401,"left":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair NOT LIKE AND": {"source":"SELECT a NOT LIKE b AND c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":266,"left":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":266,"left":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair NOT LIKE OR": {"source":"SELECT a NOT LIKE b OR c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":267,"left":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":267,"left":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair NOT LIKE LIKE": {"source":"SELECT a NOT LIKE b LIKE c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":268,"left":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":268,"left":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair NOT LIKE NOT LIKE": {"source":"SELECT a NOT LIKE b NOT LIKE c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair NOT LIKE ILIKE": {"source":"SELECT a NOT LIKE b ILIKE c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":275,"left":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":275,"left":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair NOT LIKE NOT ILIKE": {"source":"SELECT a NOT LIKE b NOT ILIKE c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":357,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":357,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair NOT LIKE &": {"source":"SELECT a NOT LIKE b & c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":38,"left":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":38,"left":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair NOT LIKE ^": {"source":"SELECT a NOT LIKE b ^ c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":94,"left":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":94,"left":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair NOT LIKE *": {"source":"SELECT a NOT LIKE b * c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":42,"left":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":42,"left":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair NOT LIKE %": {"source":"SELECT a NOT LIKE b % c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":37,"left":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":37,"left":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair NOT LIKE +": {"source":"SELECT a NOT LIKE b + c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":43,"left":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":43,"left":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair NOT LIKE -": {"source":"SELECT a NOT LIKE b - c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":45,"left":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":45,"left":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair NOT LIKE ||": {"source":"SELECT a NOT LIKE b || c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":405,"left":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":405,"left":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair NOT LIKE ->": {"source":"SELECT a NOT LIKE b -> c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":406,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":406,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair NOT LIKE #>>": {"source":"SELECT a NOT LIKE b #>> c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":418,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":418,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair ILIKE AGAINST": {"source":"SELECT a ILIKE b AGAINST c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":276,"left":{"type":275,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":276,"left":{"type":275,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair ILIKE BETWEEN": {"source":"SELECT a ILIKE b BETWEEN c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":331,"left":{"type":275,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":331,"left":{"type":275,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair ILIKE NOT BETWEEN": {"source":"SELECT a ILIKE b NOT BETWEEN c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":332,"left":{"type":275,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":332,"left":{"type":275,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair ILIKE =": {"source":"SELECT a ILIKE b = c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":61,"left":{"type":275,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":61,"left":{"type":275,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair ILIKE @@": {"source":"SELECT a ILIKE b @@ c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":401,"left":{"type":275,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":401,"left":{"type":275,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair ILIKE AND": {"source":"SELECT a ILIKE b AND c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":266,"left":{"type":275,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":266,"left":{"type":275,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair ILIKE OR": {"source":"SELECT a ILIKE b OR c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":267,"left":{"type":275,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":267,"left":{"type":275,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair ILIKE LIKE": {"source":"SELECT a ILIKE b LIKE c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":268,"left":{"type":275,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":268,"left":{"type":275,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair ILIKE NOT LIKE": {"source":"SELECT a ILIKE b NOT LIKE c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":275,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":275,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair ILIKE ILIKE": {"source":"SELECT a ILIKE b ILIKE c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":275,"left":{"type":275,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":275,"left":{"type":275,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair ILIKE NOT ILIKE": {"source":"SELECT a ILIKE b NOT ILIKE c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":275,"left":{"type":355,"name":"a"},"right":{"type":357,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":275,"left":{"type":355,"name":"a"},"right":{"type":357,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair ILIKE &": {"source":"SELECT a ILIKE b & c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":275,"left":{"type":355,"name":"a"},"right":{"type":38,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":275,"left":{"type":355,"name":"a"},"right":{"type":38,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair ILIKE ^": {"source":"SELECT a ILIKE b ^ c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":275,"left":{"type":355,"name":"a"},"right":{"type":94,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":275,"left":{"type":355,"name":"a"},"right":{"type":94,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair ILIKE *": {"source":"SELECT a ILIKE b * c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":275,"left":{"type":355,"name":"a"},"right":{"type":42,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":275,"left":{"type":355,"name":"a"},"right":{"type":42,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair ILIKE %": {"source":"SELECT a ILIKE b % c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":275,"left":{"type":355,"name":"a"},"right":{"type":37,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":275,"left":{"type":355,"name":"a"},"right":{"type":37,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair ILIKE +": {"source":"SELECT a ILIKE b + c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":275,"left":{"type":355,"name":"a"},"right":{"type":43,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":275,"left":{"type":355,"name":"a"},"right":{"type":43,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair ILIKE -": {"source":"SELECT a ILIKE b - c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":275,"left":{"type":355,"name":"a"},"right":{"type":45,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":275,"left":{"type":355,"name":"a"},"right":{"type":45,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair ILIKE ||": {"source":"SELECT a ILIKE b || c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":275,"left":{"type":355,"name":"a"},"right":{"type":405,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":275,"left":{"type":355,"name":"a"},"right":{"type":405,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair ILIKE ->": {"source":"SELECT a ILIKE b -> c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":275,"left":{"type":355,"name":"a"},"right":{"type":406,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":275,"left":{"type":355,"name":"a"},"right":{"type":406,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair ILIKE #>>": {"source":"SELECT a ILIKE b #>> c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":275,"left":{"type":355,"name":"a"},"right":{"type":418,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":275,"left":{"type":355,"name":"a"},"right":{"type":418,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair NOT ILIKE AGAINST": {"source":"SELECT a NOT ILIKE b AGAINST c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":276,"left":{"type":357,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":276,"left":{"type":357,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair NOT ILIKE BETWEEN": {"source":"SELECT a NOT ILIKE b BETWEEN c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":331,"left":{"type":357,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":331,"left":{"type":357,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair NOT ILIKE NOT BETWEEN": {"source":"SELECT a NOT ILIKE b NOT BETWEEN c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":332,"left":{"type":357,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":332,"left":{"type":357,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair NOT ILIKE =": {"source":"SELECT a NOT ILIKE b = c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":61,"left":{"type":357,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":61,"left":{"type":357,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair NOT ILIKE @@": {"source":"SELECT a NOT ILIKE b @@ c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":401,"left":{"type":357,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":401,"left":{"type":357,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair NOT ILIKE AND": {"source":"SELECT a NOT ILIKE b AND c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":266,"left":{"type":357,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":266,"left":{"type":357,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair NOT ILIKE OR": {"source":"SELECT a NOT ILIKE b OR c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":267,"left":{"type":357,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":267,"left":{"type":357,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair NOT ILIKE LIKE": {"source":"SELECT a NOT ILIKE b LIKE c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":268,"left":{"type":357,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":268,"left":{"type":357,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair NOT ILIKE NOT LIKE": {"source":"SELECT a NOT ILIKE b NOT LIKE c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":357,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":357,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair NOT ILIKE ILIKE": {"source":"SELECT a NOT ILIKE b ILIKE c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":275,"left":{"type":357,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":275,"left":{"type":357,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair NOT ILIKE NOT ILIKE": {"source":"SELECT a NOT ILIKE b NOT ILIKE c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":357,"left":{"type":355,"name":"a"},"right":{"type":357,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":357,"left":{"type":355,"name":"a"},"right":{"type":357,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair NOT ILIKE &": {"source":"SELECT a NOT ILIKE b & c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":38,"left":{"type":357,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":38,"left":{"type":357,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair NOT ILIKE ^": {"source":"SELECT a NOT ILIKE b ^ c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":94,"left":{"type":357,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":94,"left":{"type":357,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair NOT ILIKE *": {"source":"SELECT a NOT ILIKE b * c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":42,"left":{"type":357,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":42,"left":{"type":357,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair NOT ILIKE %": {"source":"SELECT a NOT ILIKE b % c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":37,"left":{"type":357,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":37,"left":{"type":357,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair NOT ILIKE +": {"source":"SELECT a NOT ILIKE b + c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":43,"left":{"type":357,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":43,"left":{"type":357,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair NOT ILIKE -": {"source":"SELECT a NOT ILIKE b - c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":45,"left":{"type":357,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":45,"left":{"type":357,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair NOT ILIKE ||": {"source":"SELECT a NOT ILIKE b || c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":405,"left":{"type":357,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":405,"left":{"type":357,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair NOT ILIKE ->": {"source":"SELECT a NOT ILIKE b -> c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":357,"left":{"type":355,"name":"a"},"right":{"type":406,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":357,"left":{"type":355,"name":"a"},"right":{"type":406,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair NOT ILIKE #>>": {"source":"SELECT a NOT ILIKE b #>> c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":357,"left":{"type":355,"name":"a"},"right":{"type":418,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":357,"left":{"type":355,"name":"a"},"right":{"type":418,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair & AGAINST": {"source":"SELECT a & b AGAINST c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":276,"left":{"type":38,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":276,"left":{"type":38,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair & BETWEEN": {"source":"SELECT a & b BETWEEN c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":331,"left":{"type":38,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":331,"left":{"type":38,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair & NOT BETWEEN": {"source":"SELECT a & b NOT BETWEEN c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":332,"left":{"type":38,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":332,"left":{"type":38,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair & =": {"source":"SELECT a & b = c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":61,"left":{"type":38,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":61,"left":{"type":38,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair & @@": {"source":"SELECT a & b @@ c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":401,"left":{"type":38,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":401,"left":{"type":38,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair & AND": {"source":"SELECT a & b AND c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":266,"left":{"type":38,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":266,"left":{"type":38,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair & OR": {"source":"SELECT a & b OR c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":267,"left":{"type":38,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":267,"left":{"type":38,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair & LIKE": {"source":"SELECT a & b LIKE c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":268,"left":{"type":38,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":268,"left":{"type":38,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair & NOT LIKE": {"source":"SELECT a & b NOT LIKE c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":38,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":38,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair & ILIKE": {"source":"SELECT a & b ILIKE c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":275,"left":{"type":38,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":275,"left":{"type":38,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair & NOT ILIKE": {"source":"SELECT a & b NOT ILIKE c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":38,"left":{"type":355,"name":"a"},"right":{"type":357,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":38,"left":{"type":355,"name":"a"},"right":{"type":357,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair & &": {"source":"SELECT a & b & c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":38,"left":{"type":38,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":38,"left":{"type":38,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair & ^": {"source":"SELECT a & b ^ c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":94,"left":{"type":38,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":94,"left":{"type":38,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair & *": {"source":"SELECT a & b * c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":38,"left":{"type":355,"name":"a"},"right":{"type":42,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":38,"left":{"type":355,"name":"a"},"right":{"type":42,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair & %": {"source":"SELECT a & b % c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":38,"left":{"type":355,"name":"a"},"right":{"type":37,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":38,"left":{"type":355,"name":"a"},"right":{"type":37,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair & +": {"source":"SELECT a & b + c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":38,"left":{"type":355,"name":"a"},"right":{"type":43,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":38,"left":{"type":355,"name":"a"},"right":{"type":43,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair & -": {"source":"SELECT a & b - c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":38,"left":{"type":355,"name":"a"},"right":{"type":45,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":38,"left":{"type":355,"name":"a"},"right":{"type":45,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair & ||": {"source":"SELECT a & b || c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":38,"left":{"type":355,"name":"a"},"right":{"type":405,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":38,"left":{"type":355,"name":"a"},"right":{"type":405,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair & ->": {"source":"SELECT a & b -> c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":38,"left":{"type":355,"name":"a"},"right":{"type":406,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":38,"left":{"type":355,"name":"a"},"right":{"type":406,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair & #>>": {"source":"SELECT a & b #>> c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":38,"left":{"type":355,"name":"a"},"right":{"type":418,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":38,"left":{"type":355,"name":"a"},"right":{"type":418,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair ^ AGAINST": {"source":"SELECT a ^ b AGAINST c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":276,"left":{"type":94,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":276,"left":{"type":94,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair ^ BETWEEN": {"source":"SELECT a ^ b BETWEEN c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":331,"left":{"type":94,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":331,"left":{"type":94,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair ^ NOT BETWEEN": {"source":"SELECT a ^ b NOT BETWEEN c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":332,"left":{"type":94,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":332,"left":{"type":94,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair ^ =": {"source":"SELECT a ^ b = c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":61,"left":{"type":94,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":61,"left":{"type":94,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair ^ @@": {"source":"SELECT a ^ b @@ c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":401,"left":{"type":94,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":401,"left":{"type":94,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair ^ AND": {"source":"SELECT a ^ b AND c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":266,"left":{"type":94,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":266,"left":{"type":94,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair ^ OR": {"source":"SELECT a ^ b OR c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":267,"left":{"type":94,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":267,"left":{"type":94,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair ^ LIKE": {"source":"SELECT a ^ b LIKE c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":268,"left":{"type":94,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":268,"left":{"type":94,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair ^ NOT LIKE": {"source":"SELECT a ^ b NOT LIKE c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":94,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":94,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair ^ ILIKE": {"source":"SELECT a ^ b ILIKE c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":275,"left":{"type":94,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":275,"left":{"type":94,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair ^ NOT ILIKE": {"source":"SELECT a ^ b NOT ILIKE c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":94,"left":{"type":355,"name":"a"},"right":{"type":357,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":94,"left":{"type":355,"name":"a"},"right":{"type":357,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair ^ &": {"source":"SELECT a ^ b & c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":38,"left":{"type":94,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":38,"left":{"type":94,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair ^ ^": {"source":"SELECT a ^ b ^ c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":94,"left":{"type":94,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":94,"left":{"type":94,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair ^ *": {"source":"SELECT a ^ b * c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":94,"left":{"type":355,"name":"a"},"right":{"type":42,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":94,"left":{"type":355,"name":"a"},"right":{"type":42,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair ^ %": {"source":"SELECT a ^ b % c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":94,"left":{"type":355,"name":"a"},"right":{"type":37,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":94,"left":{"type":355,"name":"a"},"right":{"type":37,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair ^ +": {"source":"SELECT a ^ b + c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":94,"left":{"type":355,"name":"a"},"right":{"type":43,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":94,"left":{"type":355,"name":"a"},"right":{"type":43,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair ^ -": {"source":"SELECT a ^ b - c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":94,"left":{"type":355,"name":"a"},"right":{"type":45,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":94,"left":{"type":355,"name":"a"},"right":{"type":45,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair ^ ||": {"source":"SELECT a ^ b || c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":94,"left":{"type":355,"name":"a"},"right":{"type":405,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":94,"left":{"type":355,"name":"a"},"right":{"type":405,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair ^ ->": {"source":"SELECT a ^ b -> c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":94,"left":{"type":355,"name":"a"},"right":{"type":406,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":94,"left":{"type":355,"name":"a"},"right":{"type":406,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair ^ #>>": {"source":"SELECT a ^ b #>> c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":94,"left":{"type":355,"name":"a"},"right":{"type":418,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":94,"left":{"type":355,"name":"a"},"right":{"type":418,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair * AGAINST": {"source":"SELECT a * b AGAINST c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":276,"left":{"type":42,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":276,"left":{"type":42,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair * BETWEEN": {"source":"SELECT a * b BETWEEN c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":331,"left":{"type":42,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":331,"left":{"type":42,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair * NOT BETWEEN": {"source":"SELECT a * b NOT BETWEEN c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":332,"left":{"type":42,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":332,"left":{"type":42,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair * =": {"source":"SELECT a * b = c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":61,"left":{"type":42,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":61,"left":{"type":42,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair * @@": {"source":"SELECT a * b @@ c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":401,"left":{"type":42,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":401,"left":{"type":42,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair * AND": {"source":"SELECT a * b AND c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":266,"left":{"type":42,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":266,"left":{"type":42,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair * OR": {"source":"SELECT a * b OR c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":267,"left":{"type":42,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":267,"left":{"type":42,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair * LIKE": {"source":"SELECT a * b LIKE c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":268,"left":{"type":42,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":268,"left":{"type":42,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair * NOT LIKE": {"source":"SELECT a * b NOT LIKE c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":42,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":42,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair * ILIKE": {"source":"SELECT a * b ILIKE c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":275,"left":{"type":42,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":275,"left":{"type":42,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair * NOT ILIKE": {"source":"SELECT a * b NOT ILIKE c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":42,"left":{"type":355,"name":"a"},"right":{"type":357,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":42,"left":{"type":355,"name":"a"},"right":{"type":357,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair * &": {"source":"SELECT a * b & c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":38,"left":{"type":42,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":38,"left":{"type":42,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair * ^": {"source":"SELECT a * b ^ c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":94,"left":{"type":42,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":94,"left":{"type":42,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair * *": {"source":"SELECT a * b * c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":42,"left":{"type":42,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":42,"left":{"type":42,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair * %": {"source":"SELECT a * b % c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":37,"left":{"type":42,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":37,"left":{"type":42,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair * +": {"source":"SELECT a * b + c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":42,"left":{"type":355,"name":"a"},"right":{"type":43,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":42,"left":{"type":355,"name":"a"},"right":{"type":43,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair * -": {"source":"SELECT a * b - c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":42,"left":{"type":355,"name":"a"},"right":{"type":45,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":42,"left":{"type":355,"name":"a"},"right":{"type":45,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair * ||": {"source":"SELECT a * b || c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":42,"left":{"type":355,"name":"a"},"right":{"type":405,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":42,"left":{"type":355,"name":"a"},"right":{"type":405,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair * ->": {"source":"SELECT a * b -> c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":42,"left":{"type":355,"name":"a"},"right":{"type":406,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":42,"left":{"type":355,"name":"a"},"right":{"type":406,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair * #>>": {"source":"SELECT a * b #>> c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":42,"left":{"type":355,"name":"a"},"right":{"type":418,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":42,"left":{"type":355,"name":"a"},"right":{"type":418,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair % AGAINST": {"source":"SELECT a % b AGAINST c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":276,"left":{"type":37,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":276,"left":{"type":37,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair % BETWEEN": {"source":"SELECT a % b BETWEEN c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":331,"left":{"type":37,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":331,"left":{"type":37,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair % NOT BETWEEN": {"source":"SELECT a % b NOT BETWEEN c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":332,"left":{"type":37,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":332,"left":{"type":37,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair % =": {"source":"SELECT a % b = c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":61,"left":{"type":37,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":61,"left":{"type":37,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair % @@": {"source":"SELECT a % b @@ c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":401,"left":{"type":37,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":401,"left":{"type":37,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair % AND": {"source":"SELECT a % b AND c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":266,"left":{"type":37,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":266,"left":{"type":37,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair % OR": {"source":"SELECT a % b OR c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":267,"left":{"type":37,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":267,"left":{"type":37,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair % LIKE": {"source":"SELECT a % b LIKE c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":268,"left":{"type":37,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":268,"left":{"type":37,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair % NOT LIKE": {"source":"SELECT a % b NOT LIKE c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":37,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":37,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair % ILIKE": {"source":"SELECT a % b ILIKE c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":275,"left":{"type":37,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":275,"left":{"type":37,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair % NOT ILIKE": {"source":"SELECT a % b NOT ILIKE c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":37,"left":{"type":355,"name":"a"},"right":{"type":357,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":37,"left":{"type":355,"name":"a"},"right":{"type":357,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair % &": {"source":"SELECT a % b & c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":38,"left":{"type":37,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":38,"left":{"type":37,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair % ^": {"source":"SELECT a % b ^ c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":94,"left":{"type":37,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":94,"left":{"type":37,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair % *": {"source":"SELECT a % b * c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":42,"left":{"type":37,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":42,"left":{"type":37,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair % %": {"source":"SELECT a % b % c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":37,"left":{"type":37,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":37,"left":{"type":37,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair % +": {"source":"SELECT a % b + c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":37,"left":{"type":355,"name":"a"},"right":{"type":43,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":37,"left":{"type":355,"name":"a"},"right":{"type":43,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair % -": {"source":"SELECT a % b - c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":37,"left":{"type":355,"name":"a"},"right":{"type":45,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":37,"left":{"type":355,"name":"a"},"right":{"type":45,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair % ||": {"source":"SELECT a % b || c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":37,"left":{"type":355,"name":"a"},"right":{"type":405,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":37,"left":{"type":355,"name":"a"},"right":{"type":405,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair % ->": {"source":"SELECT a % b -> c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":37,"left":{"type":355,"name":"a"},"right":{"type":406,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":37,"left":{"type":355,"name":"a"},"right":{"type":406,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair % #>>": {"source":"SELECT a % b #>> c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":37,"left":{"type":355,"name":"a"},"right":{"type":418,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":37,"left":{"type":355,"name":"a"},"right":{"type":418,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair + AGAINST": {"source":"SELECT a + b AGAINST c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":276,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":276,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair + BETWEEN": {"source":"SELECT a + b BETWEEN c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":331,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":331,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair + NOT BETWEEN": {"source":"SELECT a + b NOT BETWEEN c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":332,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":332,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair + =": {"source":"SELECT a + b = c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":61,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":61,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair + @@": {"source":"SELECT a + b @@ c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":401,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":401,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair + AND": {"source":"SELECT a + b AND c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":266,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":266,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair + OR": {"source":"SELECT a + b OR c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":267,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":267,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair + LIKE": {"source":"SELECT a + b LIKE c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":268,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":268,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair + NOT LIKE": {"source":"SELECT a + b NOT LIKE c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair + ILIKE": {"source":"SELECT a + b ILIKE c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":275,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":275,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair + NOT ILIKE": {"source":"SELECT a + b NOT ILIKE c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":357,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":357,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair + &": {"source":"SELECT a + b & c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":38,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":38,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair + ^": {"source":"SELECT a + b ^ c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":94,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":94,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair + *": {"source":"SELECT a + b * c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":42,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":42,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair + %": {"source":"SELECT a + b % c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":37,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":37,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair + +": {"source":"SELECT a + b + c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":43,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":43,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair + -": {"source":"SELECT a + b - c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":45,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":45,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair + ||": {"source":"SELECT a + b || c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":405,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":405,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair + ->": {"source":"SELECT a + b -> c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":406,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":406,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair + #>>": {"source":"SELECT a + b #>> c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":418,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":418,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair - AGAINST": {"source":"SELECT a - b AGAINST c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":276,"left":{"type":45,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":276,"left":{"type":45,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair - BETWEEN": {"source":"SELECT a - b BETWEEN c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":331,"left":{"type":45,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":331,"left":{"type":45,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair - NOT BETWEEN": {"source":"SELECT a - b NOT BETWEEN c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":332,"left":{"type":45,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":332,"left":{"type":45,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair - =": {"source":"SELECT a - b = c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":61,"left":{"type":45,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":61,"left":{"type":45,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair - @@": {"source":"SELECT a - b @@ c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":401,"left":{"type":45,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":401,"left":{"type":45,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair - AND": {"source":"SELECT a - b AND c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":266,"left":{"type":45,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":266,"left":{"type":45,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair - OR": {"source":"SELECT a - b OR c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":267,"left":{"type":45,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":267,"left":{"type":45,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair - LIKE": {"source":"SELECT a - b LIKE c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":268,"left":{"type":45,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":268,"left":{"type":45,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair - NOT LIKE": {"source":"SELECT a - b NOT LIKE c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":45,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":45,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair - ILIKE": {"source":"SELECT a - b ILIKE c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":275,"left":{"type":45,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":275,"left":{"type":45,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair - NOT ILIKE": {"source":"SELECT a - b NOT ILIKE c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":45,"left":{"type":355,"name":"a"},"right":{"type":357,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":45,"left":{"type":355,"name":"a"},"right":{"type":357,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair - &": {"source":"SELECT a - b & c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":38,"left":{"type":45,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":38,"left":{"type":45,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair - ^": {"source":"SELECT a - b ^ c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":94,"left":{"type":45,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":94,"left":{"type":45,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair - *": {"source":"SELECT a - b * c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":42,"left":{"type":45,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":42,"left":{"type":45,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair - %": {"source":"SELECT a - b % c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":37,"left":{"type":45,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":37,"left":{"type":45,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair - +": {"source":"SELECT a - b + c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":43,"left":{"type":45,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":43,"left":{"type":45,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair - -": {"source":"SELECT a - b - c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":45,"left":{"type":45,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":45,"left":{"type":45,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair - ||": {"source":"SELECT a - b || c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":405,"left":{"type":45,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":405,"left":{"type":45,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair - ->": {"source":"SELECT a - b -> c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":45,"left":{"type":355,"name":"a"},"right":{"type":406,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":45,"left":{"type":355,"name":"a"},"right":{"type":406,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair - #>>": {"source":"SELECT a - b #>> c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":45,"left":{"type":355,"name":"a"},"right":{"type":418,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":45,"left":{"type":355,"name":"a"},"right":{"type":418,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair || AGAINST": {"source":"SELECT a || b AGAINST c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":276,"left":{"type":405,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":276,"left":{"type":405,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair || BETWEEN": {"source":"SELECT a || b BETWEEN c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":331,"left":{"type":405,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":331,"left":{"type":405,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair || NOT BETWEEN": {"source":"SELECT a || b NOT BETWEEN c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":332,"left":{"type":405,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":332,"left":{"type":405,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair || =": {"source":"SELECT a || b = c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":61,"left":{"type":405,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":61,"left":{"type":405,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair || @@": {"source":"SELECT a || b @@ c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":401,"left":{"type":405,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":401,"left":{"type":405,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair || AND": {"source":"SELECT a || b AND c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":266,"left":{"type":405,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":266,"left":{"type":405,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair || OR": {"source":"SELECT a || b OR c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":267,"left":{"type":405,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":267,"left":{"type":405,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair || LIKE": {"source":"SELECT a || b LIKE c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":268,"left":{"type":405,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":268,"left":{"type":405,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair || NOT LIKE": {"source":"SELECT a || b NOT LIKE c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":405,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":405,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair || ILIKE": {"source":"SELECT a || b ILIKE c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":275,"left":{"type":405,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":275,"left":{"type":405,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair || NOT ILIKE": {"source":"SELECT a || b NOT ILIKE c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":405,"left":{"type":355,"name":"a"},"right":{"type":357,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":405,"left":{"type":355,"name":"a"},"right":{"type":357,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair || &": {"source":"SELECT a || b & c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":38,"left":{"type":405,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":38,"left":{"type":405,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair || ^": {"source":"SELECT a || b ^ c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":94,"left":{"type":405,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":94,"left":{"type":405,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair || *": {"source":"SELECT a || b * c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":42,"left":{"type":405,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":42,"left":{"type":405,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair || %": {"source":"SELECT a || b % c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":37,"left":{"type":405,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":37,"left":{"type":405,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair || +": {"source":"SELECT a || b + c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":43,"left":{"type":405,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":43,"left":{"type":405,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair || -": {"source":"SELECT a || b - c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":45,"left":{"type":405,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":45,"left":{"type":405,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair || ||": {"source":"SELECT a || b || c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":405,"left":{"type":405,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":405,"left":{"type":405,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair || ->": {"source":"SELECT a || b -> c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":405,"left":{"type":355,"name":"a"},"right":{"type":406,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":405,"left":{"type":355,"name":"a"},"right":{"type":406,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair || #>>": {"source":"SELECT a || b #>> c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":405,"left":{"type":355,"name":"a"},"right":{"type":418,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":405,"left":{"type":355,"name":"a"},"right":{"type":418,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair -> AGAINST": {"source":"SELECT a -> b AGAINST c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":276,"left":{"type":406,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":276,"left":{"type":406,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair -> BETWEEN": {"source":"SELECT a -> b BETWEEN c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":331,"left":{"type":406,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":331,"left":{"type":406,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair -> NOT BETWEEN": {"source":"SELECT a -> b NOT BETWEEN c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":332,"left":{"type":406,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":332,"left":{"type":406,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair -> =": {"source":"SELECT a -> b = c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":61,"left":{"type":406,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":61,"left":{"type":406,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair -> @@": {"source":"SELECT a -> b @@ c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":401,"left":{"type":406,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":401,"left":{"type":406,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair -> AND": {"source":"SELECT a -> b AND c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":266,"left":{"type":406,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":266,"left":{"type":406,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair -> OR": {"source":"SELECT a -> b OR c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":267,"left":{"type":406,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":267,"left":{"type":406,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair -> LIKE": {"source":"SELECT a -> b LIKE c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":268,"left":{"type":406,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":268,"left":{"type":406,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair -> NOT LIKE": {"source":"SELECT a -> b NOT LIKE c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":351,"left":{"type":406,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":351,"left":{"type":406,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair -> ILIKE": {"source":"SELECT a -> b ILIKE c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":275,"left":{"type":406,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":275,"left":{"type":406,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair -> NOT ILIKE": {"source":"SELECT a -> b NOT ILIKE c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":357,"left":{"type":406,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":357,"left":{"type":406,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair -> &": {"source":"SELECT a -> b & c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":38,"left":{"type":406,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":38,"left":{"type":406,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair -> ^": {"source":"SELECT a -> b ^ c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":94,"left":{"type":406,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":94,"left":{"type":406,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair -> *": {"source":"SELECT a -> b * c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":42,"left":{"type":406,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":42,"left":{"type":406,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair -> %": {"source":"SELECT a -> b % c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":37,"left":{"type":406,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":37,"left":{"type":406,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair -> +": {"source":"SELECT a -> b + c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":43,"left":{"type":406,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":43,"left":{"type":406,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair -> -": {"source":"SELECT a -> b - c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":45,"left":{"type":406,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":45,"left":{"type":406,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair -> ||": {"source":"SELECT a -> b || c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":405,"left":{"type":406,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":405,"left":{"type":406,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair -> ->": {"source":"SELECT a -> b -> c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":406,"left":{"type":406,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":406,"left":{"type":406,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair -> #>>": {"source":"SELECT a -> b #>> c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":418,"left":{"type":406,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":418,"left":{"type":406,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair #>> AGAINST": {"source":"SELECT a #>> b AGAINST c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":276,"left":{"type":418,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":276,"left":{"type":418,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair #>> BETWEEN": {"source":"SELECT a #>> b BETWEEN c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":331,"left":{"type":418,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":331,"left":{"type":418,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair #>> NOT BETWEEN": {"source":"SELECT a #>> b NOT BETWEEN c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":332,"left":{"type":418,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":332,"left":{"type":418,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair #>> =": {"source":"SELECT a #>> b = c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":61,"left":{"type":418,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":61,"left":{"type":418,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair #>> @@": {"source":"SELECT a #>> b @@ c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":401,"left":{"type":418,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":401,"left":{"type":418,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair #>> AND": {"source":"SELECT a #>> b AND c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":266,"left":{"type":418,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":266,"left":{"type":418,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair #>> OR": {"source":"SELECT a #>> b OR c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":267,"left":{"type":418,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":267,"left":{"type":418,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair #>> LIKE": {"source":"SELECT a #>> b LIKE c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":268,"left":{"type":418,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":268,"left":{"type":418,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair #>> NOT LIKE": {"source":"SELECT a #>> b NOT LIKE c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":351,"left":{"type":418,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":351,"left":{"type":418,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair #>> ILIKE": {"source":"SELECT a #>> b ILIKE c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":275,"left":{"type":418,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":275,"left":{"type":418,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair #>> NOT ILIKE": {"source":"SELECT a #>> b NOT ILIKE c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":357,"left":{"type":418,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":357,"left":{"type":418,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair #>> &": {"source":"SELECT a #>> b & c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":38,"left":{"type":418,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":38,"left":{"type":418,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair #>> ^": {"source":"SELECT a #>> b ^ c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":94,"left":{"type":418,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":94,"left":{"type":418,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair #>> *": {"source":"SELECT a #>> b * c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":42,"left":{"type":418,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":42,"left":{"type":418,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair #>> %": {"source":"SELECT a #>> b % c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":37,"left":{"type":418,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":37,"left":{"type":418,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair #>> +": {"source":"SELECT a #>> b + c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":43,"left":{"type":418,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":43,"left":{"type":418,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair #>> -": {"source":"SELECT a #>> b - c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":45,"left":{"type":418,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":45,"left":{"type":418,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair #>> ||": {"source":"SELECT a #>> b || c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":405,"left":{"type":418,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":405,"left":{"type":418,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair #>> ->": {"source":"SELECT a #>> b -> c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":406,"left":{"type":418,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":406,"left":{"type":418,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "pair #>> #>>": {"source":"SELECT a #>> b #>> c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":418,"left":{"type":418,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":418,"left":{"type":418,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix - before AGAINST": {"source":"SELECT - a AGAINST b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":276,"left":{"type":367,"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":276,"left":{"type":367,"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix - after AGAINST": {"source":"SELECT a AGAINST - b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":367,"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":367,"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix - before BETWEEN": {"source":"SELECT - a BETWEEN b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":331,"left":{"type":367,"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":331,"left":{"type":367,"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix - after BETWEEN": {"source":"SELECT a BETWEEN - b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":331,"left":{"type":355,"name":"a"},"right":{"type":367,"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":331,"left":{"type":355,"name":"a"},"right":{"type":367,"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix - before NOT BETWEEN": {"source":"SELECT - a NOT BETWEEN b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":332,"left":{"type":367,"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":332,"left":{"type":367,"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix - after NOT BETWEEN": {"source":"SELECT a NOT BETWEEN - b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":332,"left":{"type":355,"name":"a"},"right":{"type":367,"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":332,"left":{"type":355,"name":"a"},"right":{"type":367,"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix - before =": {"source":"SELECT - a = b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":61,"left":{"type":367,"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":61,"left":{"type":367,"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix - after =": {"source":"SELECT a = - b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":61,"left":{"type":355,"name":"a"},"right":{"type":367,"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":61,"left":{"type":355,"name":"a"},"right":{"type":367,"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix - before @@": {"source":"SELECT - a @@ b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":401,"left":{"type":367,"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":401,"left":{"type":367,"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix - after @@": {"source":"SELECT a @@ - b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":401,"left":{"type":355,"name":"a"},"right":{"type":367,"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":401,"left":{"type":355,"name":"a"},"right":{"type":367,"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix - before AND": {"source":"SELECT - a AND b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":266,"left":{"type":367,"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":266,"left":{"type":367,"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix - after AND": {"source":"SELECT a AND - b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":266,"left":{"type":355,"name":"a"},"right":{"type":367,"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":266,"left":{"type":355,"name":"a"},"right":{"type":367,"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix - before OR": {"source":"SELECT - a OR b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":267,"left":{"type":367,"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":267,"left":{"type":367,"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix - after OR": {"source":"SELECT a OR - b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":267,"left":{"type":355,"name":"a"},"right":{"type":367,"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":267,"left":{"type":355,"name":"a"},"right":{"type":367,"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix - before LIKE": {"source":"SELECT - a LIKE b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":268,"left":{"type":367,"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":268,"left":{"type":367,"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix - after LIKE": {"source":"SELECT a LIKE - b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":268,"left":{"type":355,"name":"a"},"right":{"type":367,"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":268,"left":{"type":355,"name":"a"},"right":{"type":367,"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix - before NOT LIKE": {"source":"SELECT - a NOT LIKE b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":367,"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":367,"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix - after NOT LIKE": {"source":"SELECT a NOT LIKE - b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":367,"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":367,"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix - before ILIKE": {"source":"SELECT - a ILIKE b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":275,"left":{"type":367,"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":275,"left":{"type":367,"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix - after ILIKE": {"source":"SELECT a ILIKE - b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":275,"left":{"type":355,"name":"a"},"right":{"type":367,"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":275,"left":{"type":355,"name":"a"},"right":{"type":367,"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix - before NOT ILIKE": {"source":"SELECT - a NOT ILIKE b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":367,"right":{"type":357,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":367,"right":{"type":357,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix - after NOT ILIKE": {"source":"SELECT a NOT ILIKE - b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":357,"left":{"type":355,"name":"a"},"right":{"type":367,"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":357,"left":{"type":355,"name":"a"},"right":{"type":367,"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix - before &": {"source":"SELECT - a & b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":38,"left":{"type":367,"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":38,"left":{"type":367,"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix - after &": {"source":"SELECT a & - b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":38,"left":{"type":355,"name":"a"},"right":{"type":367,"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":38,"left":{"type":355,"name":"a"},"right":{"type":367,"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix - before ^": {"source":"SELECT - a ^ b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":94,"left":{"type":367,"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":94,"left":{"type":367,"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix - after ^": {"source":"SELECT a ^ - b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":94,"left":{"type":355,"name":"a"},"right":{"type":367,"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":94,"left":{"type":355,"name":"a"},"right":{"type":367,"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix - before *": {"source":"SELECT - a * b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":42,"left":{"type":367,"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":42,"left":{"type":367,"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix - after *": {"source":"SELECT a * - b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":42,"left":{"type":355,"name":"a"},"right":{"type":367,"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":42,"left":{"type":355,"name":"a"},"right":{"type":367,"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix - before %": {"source":"SELECT - a % b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":37,"left":{"type":367,"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":37,"left":{"type":367,"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix - after %": {"source":"SELECT a % - b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":37,"left":{"type":355,"name":"a"},"right":{"type":367,"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":37,"left":{"type":355,"name":"a"},"right":{"type":367,"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix - before +": {"source":"SELECT - a + b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":43,"left":{"type":367,"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":43,"left":{"type":367,"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix - after +": {"source":"SELECT a + - b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":367,"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":367,"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix - before -": {"source":"SELECT - a - b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":45,"left":{"type":367,"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":45,"left":{"type":367,"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix - after -": {"source":"SELECT a - - b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":45,"left":{"type":355,"name":"a"},"right":{"type":367,"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":45,"left":{"type":355,"name":"a"},"right":{"type":367,"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix - before ||": {"source":"SELECT - a || b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":405,"left":{"type":367,"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":405,"left":{"type":367,"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix - after ||": {"source":"SELECT a || - b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":405,"left":{"type":355,"name":"a"},"right":{"type":367,"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":405,"left":{"type":355,"name":"a"},"right":{"type":367,"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix - before ->": {"source":"SELECT - a -> b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":367,"right":{"type":406,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":367,"right":{"type":406,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix - after ->": {"source":"SELECT a -> - b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":406,"left":{"type":355,"name":"a"},"right":{"type":367,"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":406,"left":{"type":355,"name":"a"},"right":{"type":367,"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix - before #>>": {"source":"SELECT - a #>> b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":367,"right":{"type":418,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":367,"right":{"type":418,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix - after #>>": {"source":"SELECT a #>> - b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":418,"left":{"type":355,"name":"a"},"right":{"type":367,"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":418,"left":{"type":355,"name":"a"},"right":{"type":367,"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix - -": {"source":"SELECT - - a FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":367,"right":{"type":367,"right":{"type":355,"name":"a"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":367,"right":{"type":367,"right":{"type":355,"name":"a"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix - NOT": {"source":"SELECT - NOT a FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":367,"right":{"type":33,"right":{"type":355,"name":"a"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":367,"right":{"type":33,"right":{"type":355,"name":"a"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix - ~": {"source":"SELECT - ~ a FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":367,"right":{"type":126,"right":{"type":355,"name":"a"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":367,"right":{"type":126,"right":{"type":355,"name":"a"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix NOT before AGAINST": {"source":"SELECT NOT a AGAINST b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":276,"left":{"type":33,"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":276,"left":{"type":33,"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix NOT after AGAINST": {"source":"SELECT a AGAINST NOT b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":33,"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":33,"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix NOT before BETWEEN": {"source":"SELECT NOT a BETWEEN b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":331,"left":{"type":33,"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":331,"left":{"type":33,"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix NOT after BETWEEN": {"source":"SELECT a BETWEEN NOT b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":331,"left":{"type":355,"name":"a"},"right":{"type":33,"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":331,"left":{"type":355,"name":"a"},"right":{"type":33,"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix NOT before NOT BETWEEN": {"source":"SELECT NOT a NOT BETWEEN b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":332,"left":{"type":33,"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":332,"left":{"type":33,"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix NOT after NOT BETWEEN": {"source":"SELECT a NOT BETWEEN NOT b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":332,"left":{"type":355,"name":"a"},"right":{"type":33,"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":332,"left":{"type":355,"name":"a"},"right":{"type":33,"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix NOT before =": {"source":"SELECT NOT a = b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":61,"left":{"type":33,"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":61,"left":{"type":33,"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix NOT after =": {"source":"SELECT a = NOT b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":61,"left":{"type":355,"name":"a"},"right":{"type":33,"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":61,"left":{"type":355,"name":"a"},"right":{"type":33,"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix NOT before @@": {"source":"SELECT NOT a @@ b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":401,"left":{"type":33,"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":401,"left":{"type":33,"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix NOT after @@": {"source":"SELECT a @@ NOT b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":401,"left":{"type":355,"name":"a"},"right":{"type":33,"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":401,"left":{"type":355,"name":"a"},"right":{"type":33,"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix NOT before AND": {"source":"SELECT NOT a AND b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":266,"left":{"type":33,"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":266,"left":{"type":33,"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix NOT after AND": {"source":"SELECT a AND NOT b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":266,"left":{"type":355,"name":"a"},"right":{"type":33,"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":266,"left":{"type":355,"name":"a"},"right":{"type":33,"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix NOT before OR": {"source":"SELECT NOT a OR b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":267,"left":{"type":33,"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":267,"left":{"type":33,"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix NOT after OR": {"source":"SELECT a OR NOT b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":267,"left":{"type":355,"name":"a"},"right":{"type":33,"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":267,"left":{"type":355,"name":"a"},"right":{"type":33,"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix NOT before LIKE": {"source":"SELECT NOT a LIKE b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":268,"left":{"type":33,"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":268,"left":{"type":33,"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix NOT after LIKE": {"source":"SELECT a LIKE NOT b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":268,"left":{"type":355,"name":"a"},"right":{"type":33,"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":268,"left":{"type":355,"name":"a"},"right":{"type":33,"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix NOT before NOT LIKE": {"source":"SELECT NOT a NOT LIKE b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":33,"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":33,"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix NOT after NOT LIKE": {"source":"SELECT a NOT LIKE NOT b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":33,"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":33,"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix NOT before ILIKE": {"source":"SELECT NOT a ILIKE b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":275,"left":{"type":33,"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":275,"left":{"type":33,"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix NOT after ILIKE": {"source":"SELECT a ILIKE NOT b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":275,"left":{"type":355,"name":"a"},"right":{"type":33,"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":275,"left":{"type":355,"name":"a"},"right":{"type":33,"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix NOT before NOT ILIKE": {"source":"SELECT NOT a NOT ILIKE b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":33,"right":{"type":357,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":33,"right":{"type":357,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix NOT after NOT ILIKE": {"source":"SELECT a NOT ILIKE NOT b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":357,"left":{"type":355,"name":"a"},"right":{"type":33,"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":357,"left":{"type":355,"name":"a"},"right":{"type":33,"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix NOT before &": {"source":"SELECT NOT a & b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":38,"left":{"type":33,"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":38,"left":{"type":33,"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix NOT after &": {"source":"SELECT a & NOT b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":38,"left":{"type":355,"name":"a"},"right":{"type":33,"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":38,"left":{"type":355,"name":"a"},"right":{"type":33,"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix NOT before ^": {"source":"SELECT NOT a ^ b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":94,"left":{"type":33,"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":94,"left":{"type":33,"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix NOT after ^": {"source":"SELECT a ^ NOT b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":94,"left":{"type":355,"name":"a"},"right":{"type":33,"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":94,"left":{"type":355,"name":"a"},"right":{"type":33,"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix NOT before *": {"source":"SELECT NOT a * b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":42,"left":{"type":33,"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":42,"left":{"type":33,"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix NOT after *": {"source":"SELECT a * NOT b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":42,"left":{"type":355,"name":"a"},"right":{"type":33,"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":42,"left":{"type":355,"name":"a"},"right":{"type":33,"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix NOT before %": {"source":"SELECT NOT a % b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":37,"left":{"type":33,"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":37,"left":{"type":33,"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix NOT after %": {"source":"SELECT a % NOT b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":37,"left":{"type":355,"name":"a"},"right":{"type":33,"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":37,"left":{"type":355,"name":"a"},"right":{"type":33,"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix NOT before +": {"source":"SELECT NOT a + b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":43,"left":{"type":33,"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":43,"left":{"type":33,"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix NOT after +": {"source":"SELECT a + NOT b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":33,"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":33,"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix NOT before -": {"source":"SELECT NOT a - b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":45,"left":{"type":33,"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":45,"left":{"type":33,"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix NOT after -": {"source":"SELECT a - NOT b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":45,"left":{"type":355,"name":"a"},"right":{"type":33,"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":45,"left":{"type":355,"name":"a"},"right":{"type":33,"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix NOT before ||": {"source":"SELECT NOT a || b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":405,"left":{"type":33,"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":405,"left":{"type":33,"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix NOT after ||": {"source":"SELECT a || NOT b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":405,"left":{"type":355,"name":"a"},"right":{"type":33,"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":405,"left":{"type":355,"name":"a"},"right":{"type":33,"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix NOT before ->": {"source":"SELECT NOT a -> b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":33,"right":{"type":406,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":33,"right":{"type":406,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix NOT after ->": {"source":"SELECT a -> NOT b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":406,"left":{"type":355,"name":"a"},"right":{"type":33,"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":406,"left":{"type":355,"name":"a"},"right":{"type":33,"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix NOT before #>>": {"source":"SELECT NOT a #>> b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":33,"right":{"type":418,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":33,"right":{"type":418,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix NOT after #>>": {"source":"SELECT a #>> NOT b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":418,"left":{"type":355,"name":"a"},"right":{"type":33,"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":418,"left":{"type":355,"name":"a"},"right":{"type":33,"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix NOT -": {"source":"SELECT NOT - a FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":33,"right":{"type":367,"right":{"type":355,"name":"a"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":33,"right":{"type":367,"right":{"type":355,"name":"a"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix NOT NOT": {"source":"SELECT NOT NOT a FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":33,"right":{"type":33,"right":{"type":355,"name":"a"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":33,"right":{"type":33,"right":{"type":355,"name":"a"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix NOT ~": {"source":"SELECT NOT ~ a FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":33,"right":{"type":126,"right":{"type":355,"name":"a"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":33,"right":{"type":126,"right":{"type":355,"name":"a"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix ~ before AGAINST": {"source":"SELECT ~ a AGAINST b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":276,"left":{"type":126,"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":276,"left":{"type":126,"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix ~ after AGAINST": {"source":"SELECT a AGAINST ~ b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":126,"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":126,"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix ~ before BETWEEN": {"source":"SELECT ~ a BETWEEN b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":331,"left":{"type":126,"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":331,"left":{"type":126,"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix ~ after BETWEEN": {"source":"SELECT a BETWEEN ~ b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":331,"left":{"type":355,"name":"a"},"right":{"type":126,"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":331,"left":{"type":355,"name":"a"},"right":{"type":126,"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix ~ before NOT BETWEEN": {"source":"SELECT ~ a NOT BETWEEN b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":332,"left":{"type":126,"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":332,"left":{"type":126,"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix ~ after NOT BETWEEN": {"source":"SELECT a NOT BETWEEN ~ b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":332,"left":{"type":355,"name":"a"},"right":{"type":126,"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":332,"left":{"type":355,"name":"a"},"right":{"type":126,"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix ~ before =": {"source":"SELECT ~ a = b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":61,"left":{"type":126,"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":61,"left":{"type":126,"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix ~ after =": {"source":"SELECT a = ~ b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":61,"left":{"type":355,"name":"a"},"right":{"type":126,"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":61,"left":{"type":355,"name":"a"},"right":{"type":126,"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix ~ before @@": {"source":"SELECT ~ a @@ b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":401,"left":{"type":126,"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":401,"left":{"type":126,"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix ~ after @@": {"source":"SELECT a @@ ~ b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":401,"left":{"type":355,"name":"a"},"right":{"type":126,"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":401,"left":{"type":355,"name":"a"},"right":{"type":126,"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix ~ before AND": {"source":"SELECT ~ a AND b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":266,"left":{"type":126,"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":266,"left":{"type":126,"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix ~ after AND": {"source":"SELECT a AND ~ b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":266,"left":{"type":355,"name":"a"},"right":{"type":126,"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":266,"left":{"type":355,"name":"a"},"right":{"type":126,"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix ~ before OR": {"source":"SELECT ~ a OR b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":267,"left":{"type":126,"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":267,"left":{"type":126,"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix ~ after OR": {"source":"SELECT a OR ~ b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":267,"left":{"type":355,"name":"a"},"right":{"type":126,"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":267,"left":{"type":355,"name":"a"},"right":{"type":126,"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix ~ before LIKE": {"source":"SELECT ~ a LIKE b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":268,"left":{"type":126,"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":268,"left":{"type":126,"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix ~ after LIKE": {"source":"SELECT a LIKE ~ b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":268,"left":{"type":355,"name":"a"},"right":{"type":126,"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":268,"left":{"type":355,"name":"a"},"right":{"type":126,"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix ~ before NOT LIKE": {"source":"SELECT ~ a NOT LIKE b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":126,"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":126,"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix ~ after NOT LIKE": {"source":"SELECT a NOT LIKE ~ b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":126,"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":126,"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix ~ before ILIKE": {"source":"SELECT ~ a ILIKE b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":275,"left":{"type":126,"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":275,"left":{"type":126,"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix ~ after ILIKE": {"source":"SELECT a ILIKE ~ b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":275,"left":{"type":355,"name":"a"},"right":{"type":126,"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":275,"left":{"type":355,"name":"a"},"right":{"type":126,"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix ~ before NOT ILIKE": {"source":"SELECT ~ a NOT ILIKE b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":126,"right":{"type":357,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":126,"right":{"type":357,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix ~ after NOT ILIKE": {"source":"SELECT a NOT ILIKE ~ b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":357,"left":{"type":355,"name":"a"},"right":{"type":126,"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":357,"left":{"type":355,"name":"a"},"right":{"type":126,"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix ~ before &": {"source":"SELECT ~ a & b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":38,"left":{"type":126,"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":38,"left":{"type":126,"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix ~ after &": {"source":"SELECT a & ~ b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":38,"left":{"type":355,"name":"a"},"right":{"type":126,"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":38,"left":{"type":355,"name":"a"},"right":{"type":126,"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix ~ before ^": {"source":"SELECT ~ a ^ b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":94,"left":{"type":126,"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":94,"left":{"type":126,"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix ~ after ^": {"source":"SELECT a ^ ~ b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":94,"left":{"type":355,"name":"a"},"right":{"type":126,"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":94,"left":{"type":355,"name":"a"},"right":{"type":126,"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix ~ before *": {"source":"SELECT ~ a * b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":42,"left":{"type":126,"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":42,"left":{"type":126,"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix ~ after *": {"source":"SELECT a * ~ b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":42,"left":{"type":355,"name":"a"},"right":{"type":126,"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":42,"left":{"type":355,"name":"a"},"right":{"type":126,"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix ~ before %": {"source":"SELECT ~ a % b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":37,"left":{"type":126,"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":37,"left":{"type":126,"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix ~ after %": {"source":"SELECT a % ~ b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":37,"left":{"type":355,"name":"a"},"right":{"type":126,"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":37,"left":{"type":355,"name":"a"},"right":{"type":126,"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix ~ before +": {"source":"SELECT ~ a + b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":43,"left":{"type":126,"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":43,"left":{"type":126,"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix ~ after +": {"source":"SELECT a + ~ b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":126,"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":126,"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix ~ before -": {"source":"SELECT ~ a - b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":45,"left":{"type":126,"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":45,"left":{"type":126,"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix ~ after -": {"source":"SELECT a - ~ b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":45,"left":{"type":355,"name":"a"},"right":{"type":126,"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":45,"left":{"type":355,"name":"a"},"right":{"type":126,"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix ~ before ||": {"source":"SELECT ~ a || b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":405,"left":{"type":126,"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":405,"left":{"type":126,"right":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix ~ after ||": {"source":"SELECT a || ~ b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":405,"left":{"type":355,"name":"a"},"right":{"type":126,"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":405,"left":{"type":355,"name":"a"},"right":{"type":126,"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix ~ before ->": {"source":"SELECT ~ a -> b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":126,"right":{"type":406,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":126,"right":{"type":406,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix ~ after ->": {"source":"SELECT a -> ~ b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":406,"left":{"type":355,"name":"a"},"right":{"type":126,"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":406,"left":{"type":355,"name":"a"},"right":{"type":126,"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix ~ before #>>": {"source":"SELECT ~ a #>> b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":126,"right":{"type":418,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":126,"right":{"type":418,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix ~ after #>>": {"source":"SELECT a #>> ~ b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":418,"left":{"type":355,"name":"a"},"right":{"type":126,"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":418,"left":{"type":355,"name":"a"},"right":{"type":126,"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix ~ -": {"source":"SELECT ~ - a FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":126,"right":{"type":367,"right":{"type":355,"name":"a"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":126,"right":{"type":367,"right":{"type":355,"name":"a"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix ~ NOT": {"source":"SELECT ~ NOT a FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":126,"right":{"type":33,"right":{"type":355,"name":"a"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":126,"right":{"type":33,"right":{"type":355,"name":"a"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "prefix ~ ~": {"source":"SELECT ~ ~ a FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":126,"right":{"type":126,"right":{"type":355,"name":"a"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":126,"right":{"type":126,"right":{"type":355,"name":"a"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IS NULL after AGAINST": {"source":"SELECT a AGAINST b IS NULL FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":365,"left":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":365,"left":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IS NULL before AGAINST": {"source":"SELECT a IS NULL AGAINST b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":276,"left":{"type":365,"left":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":276,"left":{"type":365,"left":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IS NULL after BETWEEN": {"source":"SELECT a BETWEEN b IS NULL FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":331,"left":{"type":355,"name":"a"},"right":{"type":365,"left":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":331,"left":{"type":355,"name":"a"},"right":{"type":365,"left":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IS NULL before BETWEEN": {"source":"SELECT a IS NULL BETWEEN b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":331,"left":{"type":365,"left":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":331,"left":{"type":365,"left":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IS NULL after NOT BETWEEN": {"source":"SELECT a NOT BETWEEN b IS NULL FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":332,"left":{"type":355,"name":"a"},"right":{"type":365,"left":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":332,"left":{"type":355,"name":"a"},"right":{"type":365,"left":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IS NULL before NOT BETWEEN": {"source":"SELECT a IS NULL NOT BETWEEN b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":332,"left":{"type":365,"left":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":332,"left":{"type":365,"left":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IS NULL after =": {"source":"SELECT a = b IS NULL FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":61,"left":{"type":355,"name":"a"},"right":{"type":365,"left":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":61,"left":{"type":355,"name":"a"},"right":{"type":365,"left":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IS NULL before =": {"source":"SELECT a IS NULL = b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":61,"left":{"type":365,"left":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":61,"left":{"type":365,"left":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IS NULL after @@": {"source":"SELECT a @@ b IS NULL FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":401,"left":{"type":355,"name":"a"},"right":{"type":365,"left":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":401,"left":{"type":355,"name":"a"},"right":{"type":365,"left":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IS NULL before @@": {"source":"SELECT a IS NULL @@ b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":401,"left":{"type":365,"left":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":401,"left":{"type":365,"left":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IS NULL after AND": {"source":"SELECT a AND b IS NULL FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":266,"left":{"type":355,"name":"a"},"right":{"type":365,"left":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":266,"left":{"type":355,"name":"a"},"right":{"type":365,"left":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IS NULL before AND": {"source":"SELECT a IS NULL AND b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":266,"left":{"type":365,"left":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":266,"left":{"type":365,"left":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IS NULL after OR": {"source":"SELECT a OR b IS NULL FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":267,"left":{"type":355,"name":"a"},"right":{"type":365,"left":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":267,"left":{"type":355,"name":"a"},"right":{"type":365,"left":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IS NULL before OR": {"source":"SELECT a IS NULL OR b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":267,"left":{"type":365,"left":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":267,"left":{"type":365,"left":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IS NULL after LIKE": {"source":"SELECT a LIKE b IS NULL FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":268,"left":{"type":355,"name":"a"},"right":{"type":365,"left":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":268,"left":{"type":355,"name":"a"},"right":{"type":365,"left":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IS NULL before LIKE": {"source":"SELECT a IS NULL LIKE b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":268,"left":{"type":365,"left":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":268,"left":{"type":365,"left":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IS NULL after NOT LIKE": {"source":"SELECT a NOT LIKE b IS NULL FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":365,"left":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":365,"left":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IS NULL before NOT LIKE": {"source":"SELECT a IS NULL NOT LIKE b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":351,"left":{"type":365,"left":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":351,"left":{"type":365,"left":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IS NULL after ILIKE": {"source":"SELECT a ILIKE b IS NULL FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":275,"left":{"type":355,"name":"a"},"right":{"type":365,"left":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":275,"left":{"type":355,"name":"a"},"right":{"type":365,"left":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IS NULL before ILIKE": {"source":"SELECT a IS NULL ILIKE b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":275,"left":{"type":365,"left":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":275,"left":{"type":365,"left":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IS NULL after NOT ILIKE": {"source":"SELECT a NOT ILIKE b IS NULL FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":365,"left":{"type":357,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":365,"left":{"type":357,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IS NULL before NOT ILIKE": {"source":"SELECT a IS NULL NOT ILIKE b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":357,"left":{"type":365,"left":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":357,"left":{"type":365,"left":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IS NULL after &": {"source":"SELECT a & b IS NULL FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":38,"left":{"type":355,"name":"a"},"right":{"type":365,"left":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":38,"left":{"type":355,"name":"a"},"right":{"type":365,"left":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IS NULL before &": {"source":"SELECT a IS NULL & b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":38,"left":{"type":365,"left":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":38,"left":{"type":365,"left":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IS NULL after ^": {"source":"SELECT a ^ b IS NULL FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":94,"left":{"type":355,"name":"a"},"right":{"type":365,"left":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":94,"left":{"type":355,"name":"a"},"right":{"type":365,"left":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IS NULL before ^": {"source":"SELECT a IS NULL ^ b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":94,"left":{"type":365,"left":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":94,"left":{"type":365,"left":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IS NULL after *": {"source":"SELECT a * b IS NULL FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":42,"left":{"type":355,"name":"a"},"right":{"type":365,"left":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":42,"left":{"type":355,"name":"a"},"right":{"type":365,"left":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IS NULL before *": {"source":"SELECT a IS NULL * b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":42,"left":{"type":365,"left":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":42,"left":{"type":365,"left":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IS NULL after %": {"source":"SELECT a % b IS NULL FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":37,"left":{"type":355,"name":"a"},"right":{"type":365,"left":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":37,"left":{"type":355,"name":"a"},"right":{"type":365,"left":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IS NULL before %": {"source":"SELECT a IS NULL % b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":37,"left":{"type":365,"left":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":37,"left":{"type":365,"left":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IS NULL after +": {"source":"SELECT a + b IS NULL FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":365,"left":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":365,"left":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IS NULL before +": {"source":"SELECT a IS NULL + b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":43,"left":{"type":365,"left":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":43,"left":{"type":365,"left":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IS NULL after -": {"source":"SELECT a - b IS NULL FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":45,"left":{"type":355,"name":"a"},"right":{"type":365,"left":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":45,"left":{"type":355,"name":"a"},"right":{"type":365,"left":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IS NULL before -": {"source":"SELECT a IS NULL - b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":45,"left":{"type":365,"left":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":45,"left":{"type":365,"left":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IS NULL after ||": {"source":"SELECT a || b IS NULL FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":405,"left":{"type":355,"name":"a"},"right":{"type":365,"left":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":405,"left":{"type":355,"name":"a"},"right":{"type":365,"left":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IS NULL before ||": {"source":"SELECT a IS NULL || b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":405,"left":{"type":365,"left":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":405,"left":{"type":365,"left":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IS NULL after ->": {"source":"SELECT a -> b IS NULL FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":365,"left":{"type":406,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":365,"left":{"type":406,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IS NULL before ->": {"source":"SELECT a IS NULL -> b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":406,"left":{"type":365,"left":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":406,"left":{"type":365,"left":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IS NULL after #>>": {"source":"SELECT a #>> b IS NULL FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":365,"left":{"type":418,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":365,"left":{"type":418,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IS NULL before #>>": {"source":"SELECT a IS NULL #>> b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":418,"left":{"type":365,"left":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":418,"left":{"type":365,"left":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IS NULL after prefix -": {"source":"SELECT - a IS NULL FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":367,"right":{"type":365,"left":{"type":355,"name":"a"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":367,"right":{"type":365,"left":{"type":355,"name":"a"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IS NULL after prefix NOT": {"source":"SELECT NOT a IS NULL FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":365,"left":{"type":33,"right":{"type":355,"name":"a"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":365,"left":{"type":33,"right":{"type":355,"name":"a"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IS NULL after prefix ~": {"source":"SELECT ~ a IS NULL FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":365,"left":{"type":126,"right":{"type":355,"name":"a"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":365,"left":{"type":126,"right":{"type":355,"name":"a"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IS NULL then IS NULL": {"source":"SELECT a IS NULL IS NULL FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":365,"left":{"type":365,"left":{"type":355,"name":"a"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":365,"left":{"type":365,"left":{"type":355,"name":"a"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IS NULL then IS NOT NULL": {"source":"SELECT a IS NULL IS NOT NULL FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":366,"left":{"type":365,"left":{"type":355,"name":"a"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":366,"left":{"type":365,"left":{"type":355,"name":"a"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IS NULL then IN (1)": {"source":"SELECT a IS NULL IN (1) FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":315,"left":{"type":365,"left":{"type":355,"name":"a"}},"right":[{"type":258,"value":"1"}]}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "postfix IS NULL then NOT IN (1)": {"source":"SELECT a IS NULL NOT IN (1) FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":323,"left":{"type":365,"left":{"type":355,"name":"a"}},"right":[{"type":258,"value":"1"}]}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "postfix IS NULL then IN (SELECT x FROM s)": {"source":"SELECT a IS NULL IN (SELECT x FROM s) FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":315,"left":{"type":365,"left":{"type":355,"name":"a"}},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"x"}}],"tables":{"qualifiedName":{"type":355,"name":"s"}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":315,"left":{"type":365,"left":{"type":355,"name":"a"}},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"x"}}],"tables":{"qualifiedName":{"type":355,"name":"s"}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IS NOT NULL after AGAINST": {"source":"SELECT a AGAINST b IS NOT NULL FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":366,"left":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":366,"left":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IS NOT NULL before AGAINST": {"source":"SELECT a IS NOT NULL AGAINST b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":276,"left":{"type":366,"left":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":276,"left":{"type":366,"left":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IS NOT NULL after BETWEEN": {"source":"SELECT a BETWEEN b IS NOT NULL FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":331,"left":{"type":355,"name":"a"},"right":{"type":366,"left":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":331,"left":{"type":355,"name":"a"},"right":{"type":366,"left":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IS NOT NULL before BETWEEN": {"source":"SELECT a IS NOT NULL BETWEEN b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":331,"left":{"type":366,"left":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":331,"left":{"type":366,"left":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IS NOT NULL after NOT BETWEEN": {"source":"SELECT a NOT BETWEEN b IS NOT NULL FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":332,"left":{"type":355,"name":"a"},"right":{"type":366,"left":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":332,"left":{"type":355,"name":"a"},"right":{"type":366,"left":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IS NOT NULL before NOT BETWEEN": {"source":"SELECT a IS NOT NULL NOT BETWEEN b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":332,"left":{"type":366,"left":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":332,"left":{"type":366,"left":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IS NOT NULL after =": {"source":"SELECT a = b IS NOT NULL FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":61,"left":{"type":355,"name":"a"},"right":{"type":366,"left":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":61,"left":{"type":355,"name":"a"},"right":{"type":366,"left":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IS NOT NULL before =": {"source":"SELECT a IS NOT NULL = b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":61,"left":{"type":366,"left":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":61,"left":{"type":366,"left":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IS NOT NULL after @@": {"source":"SELECT a @@ b IS NOT NULL FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":401,"left":{"type":355,"name":"a"},"right":{"type":366,"left":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":401,"left":{"type":355,"name":"a"},"right":{"type":366,"left":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IS NOT NULL before @@": {"source":"SELECT a IS NOT NULL @@ b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":401,"left":{"type":366,"left":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":401,"left":{"type":366,"left":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IS NOT NULL after AND": {"source":"SELECT a AND b IS NOT NULL FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":266,"left":{"type":355,"name":"a"},"right":{"type":366,"left":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":266,"left":{"type":355,"name":"a"},"right":{"type":366,"left":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IS NOT NULL before AND": {"source":"SELECT a IS NOT NULL AND b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":266,"left":{"type":366,"left":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":266,"left":{"type":366,"left":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IS NOT NULL after OR": {"source":"SELECT a OR b IS NOT NULL FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":267,"left":{"type":355,"name":"a"},"right":{"type":366,"left":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":267,"left":{"type":355,"name":"a"},"right":{"type":366,"left":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IS NOT NULL before OR": {"source":"SELECT a IS NOT NULL OR b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":267,"left":{"type":366,"left":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":267,"left":{"type":366,"left":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IS NOT NULL after LIKE": {"source":"SELECT a LIKE b IS NOT NULL FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":268,"left":{"type":355,"name":"a"},"right":{"type":366,"left":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":268,"left":{"type":355,"name":"a"},"right":{"type":366,"left":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IS NOT NULL before LIKE": {"source":"SELECT a IS NOT NULL LIKE b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":268,"left":{"type":366,"left":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":268,"left":{"type":366,"left":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IS NOT NULL after NOT LIKE": {"source":"SELECT a NOT LIKE b IS NOT NULL FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":366,"left":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":366,"left":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IS NOT NULL before NOT LIKE": {"source":"SELECT a IS NOT NULL NOT LIKE b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":351,"left":{"type":366,"left":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":351,"left":{"type":366,"left":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IS NOT NULL after ILIKE": {"source":"SELECT a ILIKE b IS NOT NULL FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":275,"left":{"type":355,"name":"a"},"right":{"type":366,"left":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":275,"left":{"type":355,"name":"a"},"right":{"type":366,"left":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IS NOT NULL before ILIKE": {"source":"SELECT a IS NOT NULL ILIKE b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":275,"left":{"type":366,"left":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":275,"left":{"type":366,"left":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IS NOT NULL after NOT ILIKE": {"source":"SELECT a NOT ILIKE b IS NOT NULL FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":366,"left":{"type":357,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":366,"left":{"type":357,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IS NOT NULL before NOT ILIKE": {"source":"SELECT a IS NOT NULL NOT ILIKE b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":357,"left":{"type":366,"left":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":357,"left":{"type":366,"left":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IS NOT NULL after &": {"source":"SELECT a & b IS NOT NULL FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":38,"left":{"type":355,"name":"a"},"right":{"type":366,"left":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":38,"left":{"type":355,"name":"a"},"right":{"type":366,"left":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IS NOT NULL before &": {"source":"SELECT a IS NOT NULL & b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":38,"left":{"type":366,"left":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":38,"left":{"type":366,"left":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IS NOT NULL after ^": {"source":"SELECT a ^ b IS NOT NULL FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":94,"left":{"type":355,"name":"a"},"right":{"type":366,"left":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":94,"left":{"type":355,"name":"a"},"right":{"type":366,"left":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IS NOT NULL before ^": {"source":"SELECT a IS NOT NULL ^ b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":94,"left":{"type":366,"left":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":94,"left":{"type":366,"left":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IS NOT NULL after *": {"source":"SELECT a * b IS NOT NULL FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":42,"left":{"type":355,"name":"a"},"right":{"type":366,"left":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":42,"left":{"type":355,"name":"a"},"right":{"type":366,"left":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IS NOT NULL before *": {"source":"SELECT a IS NOT NULL * b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":42,"left":{"type":366,"left":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":42,"left":{"type":366,"left":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IS NOT NULL after %": {"source":"SELECT a % b IS NOT NULL FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":37,"left":{"type":355,"name":"a"},"right":{"type":366,"left":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":37,"left":{"type":355,"name":"a"},"right":{"type":366,"left":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IS NOT NULL before %": {"source":"SELECT a IS NOT NULL % b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":37,"left":{"type":366,"left":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":37,"left":{"type":366,"left":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IS NOT NULL after +": {"source":"SELECT a + b IS NOT NULL FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":366,"left":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":366,"left":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IS NOT NULL before +": {"source":"SELECT a IS NOT NULL + b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":43,"left":{"type":366,"left":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":43,"left":{"type":366,"left":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IS NOT NULL after -": {"source":"SELECT a - b IS NOT NULL FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":45,"left":{"type":355,"name":"a"},"right":{"type":366,"left":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":45,"left":{"type":355,"name":"a"},"right":{"type":366,"left":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IS NOT NULL before -": {"source":"SELECT a IS NOT NULL - b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":45,"left":{"type":366,"left":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":45,"left":{"type":366,"left":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IS NOT NULL after ||": {"source":"SELECT a || b IS NOT NULL FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":405,"left":{"type":355,"name":"a"},"right":{"type":366,"left":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":405,"left":{"type":355,"name":"a"},"right":{"type":366,"left":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IS NOT NULL before ||": {"source":"SELECT a IS NOT NULL || b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":405,"left":{"type":366,"left":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":405,"left":{"type":366,"left":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IS NOT NULL after ->": {"source":"SELECT a -> b IS NOT NULL FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":366,"left":{"type":406,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":366,"left":{"type":406,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IS NOT NULL before ->": {"source":"SELECT a IS NOT NULL -> b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":406,"left":{"type":366,"left":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":406,"left":{"type":366,"left":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IS NOT NULL after #>>": {"source":"SELECT a #>> b IS NOT NULL FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":366,"left":{"type":418,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":366,"left":{"type":418,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IS NOT NULL before #>>": {"source":"SELECT a IS NOT NULL #>> b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":418,"left":{"type":366,"left":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":418,"left":{"type":366,"left":{"type":355,"name":"a"}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IS NOT NULL after prefix -": {"source":"SELECT - a IS NOT NULL FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":367,"right":{"type":366,"left":{"type":355,"name":"a"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":367,"right":{"type":366,"left":{"type":355,"name":"a"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IS NOT NULL after prefix NOT": {"source":"SELECT NOT a IS NOT NULL FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":366,"left":{"type":33,"right":{"type":355,"name":"a"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":366,"left":{"type":33,"right":{"type":355,"name":"a"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IS NOT NULL after prefix ~": {"source":"SELECT ~ a IS NOT NULL FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":366,"left":{"type":126,"right":{"type":355,"name":"a"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":366,"left":{"type":126,"right":{"type":355,"name":"a"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IS NOT NULL then IS NULL": {"source":"SELECT a IS NOT NULL IS NULL FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":365,"left":{"type":366,"left":{"type":355,"name":"a"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":365,"left":{"type":366,"left":{"type":355,"name":"a"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IS NOT NULL then IS NOT NULL": {"source":"SELECT a IS NOT NULL IS NOT NULL FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":366,"left":{"type":366,"left":{"type":355,"name":"a"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":366,"left":{"type":366,"left":{"type":355,"name":"a"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IS NOT NULL then IN (1)": {"source":"SELECT a IS NOT NULL IN (1) FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":315,"left":{"type":366,"left":{"type":355,"name":"a"}},"right":[{"type":258,"value":"1"}]}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "postfix IS NOT NULL then NOT IN (1)": {"source":"SELECT a IS NOT NULL NOT IN (1) FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":323,"left":{"type":366,"left":{"type":355,"name":"a"}},"right":[{"type":258,"value":"1"}]}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "postfix IS NOT NULL then IN (SELECT x FROM s)": {"source":"SELECT a IS NOT NULL IN (SELECT x FROM s) FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":315,"left":{"type":366,"left":{"type":355,"name":"a"}},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"x"}}],"tables":{"qualifiedName":{"type":355,"name":"s"}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":315,"left":{"type":366,"left":{"type":355,"name":"a"}},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"x"}}],"tables":{"qualifiedName":{"type":355,"name":"s"}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IN (1) after AGAINST": {"source":"SELECT a AGAINST b IN (1) FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":315,"left":{"type":355,"name":"b"},"right":[{"type":258,"value":"1"}]}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "postfix IN (1) before AGAINST": {"source":"SELECT a IN (1) AGAINST b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":276,"left":{"type":315,"left":{"type":355,"name":"a"},"right":[{"type":258,"value":"1"}]},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "postfix IN (1) after BETWEEN": {"source":"SELECT a BETWEEN b IN (1) FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":331,"left":{"type":355,"name":"a"},"right":{"type":315,"left":{"type":355,"name":"b"},"right":[{"type":258,"value":"1"}]}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "postfix IN (1) before BETWEEN": {"source":"SELECT a IN (1) BETWEEN b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":331,"left":{"type":315,"left":{"type":355,"name":"a"},"right":[{"type":258,"value":"1"}]},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "postfix IN (1) after NOT BETWEEN": {"source":"SELECT a NOT BETWEEN b IN (1) FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":332,"left":{"type":355,"name":"a"},"right":{"type":315,"left":{"type":355,"name":"b"},"right":[{"type":258,"value":"1"}]}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "postfix IN (1) before NOT BETWEEN": {"source":"SELECT a IN (1) NOT BETWEEN b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":332,"left":{"type":315,"left":{"type":355,"name":"a"},"right":[{"type":258,"value":"1"}]},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "postfix IN (1) after =": {"source":"SELECT a = b IN (1) FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":61,"left":{"type":355,"name":"a"},"right":{"type":315,"left":{"type":355,"name":"b"},"right":[{"type":258,"value":"1"}]}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "postfix IN (1) before =": {"source":"SELECT a IN (1) = b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":61,"left":{"type":315,"left":{"type":355,"name":"a"},"right":[{"type":258,"value":"1"}]},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "postfix IN (1) after @@": {"source":"SELECT a @@ b IN (1) FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":401,"left":{"type":355,"name":"a"},"right":{"type":315,"left":{"type":355,"name":"b"},"right":[{"type":258,"value":"1"}]}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "postfix IN (1) before @@": {"source":"SELECT a IN (1) @@ b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":401,"left":{"type":315,"left":{"type":355,"name":"a"},"right":[{"type":258,"value":"1"}]},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "postfix IN (1) after AND": {"source":"SELECT a AND b IN (1) FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":266,"left":{"type":355,"name":"a"},"right":{"type":315,"left":{"type":355,"name":"b"},"right":[{"type":258,"value":"1"}]}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "postfix IN (1) before AND": {"source":"SELECT a IN (1) AND b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":266,"left":{"type":315,"left":{"type":355,"name":"a"},"right":[{"type":258,"value":"1"}]},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "postfix IN (1) after OR": {"source":"SELECT a OR b IN (1) FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":267,"left":{"type":355,"name":"a"},"right":{"type":315,"left":{"type":355,"name":"b"},"right":[{"type":258,"value":"1"}]}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "postfix IN (1) before OR": {"source":"SELECT a IN (1) OR b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":267,"left":{"type":315,"left":{"type":355,"name":"a"},"right":[{"type":258,"value":"1"}]},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "postfix IN (1) after LIKE": {"source":"SELECT a LIKE b IN (1) FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":268,"left":{"type":355,"name":"a"},"right":{"type":315,"left":{"type":355,"name":"b"},"right":[{"type":258,"value":"1"}]}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "postfix IN (1) before LIKE": {"source":"SELECT a IN (1) LIKE b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":268,"left":{"type":315,"left":{"type":355,"name":"a"},"right":[{"type":258,"value":"1"}]},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "postfix IN (1) after NOT LIKE": {"source":"SELECT a NOT LIKE b IN (1) FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":315,"left":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":[{"type":258,"value":"1"}]}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "postfix IN (1) before NOT LIKE": {"source":"SELECT a IN (1) NOT LIKE b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":351,"left":{"type":315,"left":{"type":355,"name":"a"},"right":[{"type":258,"value":"1"}]},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "postfix IN (1) after ILIKE": {"source":"SELECT a ILIKE b IN (1) FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":275,"left":{"type":355,"name":"a"},"right":{"type":315,"left":{"type":355,"name":"b"},"right":[{"type":258,"value":"1"}]}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "postfix IN (1) before ILIKE": {"source":"SELECT a IN (1) ILIKE b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":275,"left":{"type":315,"left":{"type":355,"name":"a"},"right":[{"type":258,"value":"1"}]},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "postfix IN (1) after NOT ILIKE": {"source":"SELECT a NOT ILIKE b IN (1) FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":315,"left":{"type":357,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":[{"type":258,"value":"1"}]}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "postfix IN (1) before NOT ILIKE": {"source":"SELECT a IN (1) NOT ILIKE b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":357,"left":{"type":315,"left":{"type":355,"name":"a"},"right":[{"type":258,"value":"1"}]},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "postfix IN (1) after &": {"source":"SELECT a & b IN (1) FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":38,"left":{"type":355,"name":"a"},"right":{"type":315,"left":{"type":355,"name":"b"},"right":[{"type":258,"value":"1"}]}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "postfix IN (1) before &": {"source":"SELECT a IN (1) & b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":38,"left":{"type":315,"left":{"type":355,"name":"a"},"right":[{"type":258,"value":"1"}]},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "postfix IN (1) after ^": {"source":"SELECT a ^ b IN (1) FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":94,"left":{"type":355,"name":"a"},"right":{"type":315,"left":{"type":355,"name":"b"},"right":[{"type":258,"value":"1"}]}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "postfix IN (1) before ^": {"source":"SELECT a IN (1) ^ b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":94,"left":{"type":315,"left":{"type":355,"name":"a"},"right":[{"type":258,"value":"1"}]},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "postfix IN (1) after *": {"source":"SELECT a * b IN (1) FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":42,"left":{"type":355,"name":"a"},"right":{"type":315,"left":{"type":355,"name":"b"},"right":[{"type":258,"value":"1"}]}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "postfix IN (1) before *": {"source":"SELECT a IN (1) * b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":42,"left":{"type":315,"left":{"type":355,"name":"a"},"right":[{"type":258,"value":"1"}]},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "postfix IN (1) after %": {"source":"SELECT a % b IN (1) FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":37,"left":{"type":355,"name":"a"},"right":{"type":315,"left":{"type":355,"name":"b"},"right":[{"type":258,"value":"1"}]}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "postfix IN (1) before %": {"source":"SELECT a IN (1) % b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":37,"left":{"type":315,"left":{"type":355,"name":"a"},"right":[{"type":258,"value":"1"}]},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "postfix IN (1) after +": {"source":"SELECT a + b IN (1) FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":315,"left":{"type":355,"name":"b"},"right":[{"type":258,"value":"1"}]}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "postfix IN (1) before +": {"source":"SELECT a IN (1) + b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":43,"left":{"type":315,"left":{"type":355,"name":"a"},"right":[{"type":258,"value":"1"}]},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "postfix IN (1) after -": {"source":"SELECT a - b IN (1) FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":45,"left":{"type":355,"name":"a"},"right":{"type":315,"left":{"type":355,"name":"b"},"right":[{"type":258,"value":"1"}]}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "postfix IN (1) before -": {"source":"SELECT a IN (1) - b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":45,"left":{"type":315,"left":{"type":355,"name":"a"},"right":[{"type":258,"value":"1"}]},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "postfix IN (1) after ||": {"source":"SELECT a || b IN (1) FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":405,"left":{"type":355,"name":"a"},"right":{"type":315,"left":{"type":355,"name":"b"},"right":[{"type":258,"value":"1"}]}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "postfix IN (1) before ||": {"source":"SELECT a IN (1) || b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":405,"left":{"type":315,"left":{"type":355,"name":"a"},"right":[{"type":258,"value":"1"}]},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "postfix IN (1) after ->": {"source":"SELECT a -> b IN (1) FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":315,"left":{"type":406,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":[{"type":258,"value":"1"}]}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "postfix IN (1) before ->": {"source":"SELECT a IN (1) -> b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":406,"left":{"type":315,"left":{"type":355,"name":"a"},"right":[{"type":258,"value":"1"}]},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "postfix IN (1) after #>>": {"source":"SELECT a #>> b IN (1) FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":315,"left":{"type":418,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":[{"type":258,"value":"1"}]}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "postfix IN (1) before #>>": {"source":"SELECT a IN (1) #>> b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":418,"left":{"type":315,"left":{"type":355,"name":"a"},"right":[{"type":258,"value":"1"}]},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "postfix IN (1) after prefix -": {"source":"SELECT - a IN (1) FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":367,"right":{"type":315,"left":{"type":355,"name":"a"},"right":[{"type":258,"value":"1"}]}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "postfix IN (1) after prefix NOT": {"source":"SELECT NOT a IN (1) FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":315,"left":{"type":33,"right":{"type":355,"name":"a"}},"right":[{"type":258,"value":"1"}]}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "postfix IN (1) after prefix ~": {"source":"SELECT ~ a IN (1) FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":315,"left":{"type":126,"right":{"type":355,"name":"a"}},"right":[{"type":258,"value":"1"}]}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "postfix IN (1) then IS NULL": {"source":"SELECT a IN (1) IS NULL FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":365,"left":{"type":315,"left":{"type":355,"name":"a"},"right":[{"type":258,"value":"1"}]}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "postfix IN (1) then IS NOT NULL": {"source":"SELECT a IN (1) IS NOT NULL FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":366,"left":{"type":315,"left":{"type":355,"name":"a"},"right":[{"type":258,"value":"1"}]}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "postfix IN (1) then IN (1)": {"source":"SELECT a IN (1) IN (1) FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":315,"left":{"type":315,"left":{"type":355,"name":"a"},"right":[{"type":258,"value":"1"}]},"right":[{"type":258,"value":"1"}]}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "postfix IN (1) then NOT IN (1)": {"source":"SELECT a IN (1) NOT IN (1) FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":323,"left":{"type":315,"left":{"type":355,"name":"a"},"right":[{"type":258,"value":"1"}]},"right":[{"type":258,"value":"1"}]}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "postfix IN (1) then IN (SELECT x FROM s)": {"source":"SELECT a IN (1) IN (SELECT x FROM s) FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":315,"left":{"type":315,"left":{"type":355,"name":"a"},"right":[{"type":258,"value":"1"}]},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"x"}}],"tables":{"qualifiedName":{"type":355,"name":"s"}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "postfix NOT IN (1) after AGAINST": {"source":"SELECT a AGAINST b NOT IN (1) FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":323,"left":{"type":355,"name":"b"},"right":[{"type":258,"value":"1"}]}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "postfix NOT IN (1) before AGAINST": {"source":"SELECT a NOT IN (1) AGAINST b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":276,"left":{"type":323,"left":{"type":355,"name":"a"},"right":[{"type":258,"value":"1"}]},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "postfix NOT IN (1) after BETWEEN": {"source":"SELECT a BETWEEN b NOT IN (1) FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":331,"left":{"type":355,"name":"a"},"right":{"type":323,"left":{"type":355,"name":"b"},"right":[{"type":258,"value":"1"}]}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "postfix NOT IN (1) before BETWEEN": {"source":"SELECT a NOT IN (1) BETWEEN b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":331,"left":{"type":323,"left":{"type":355,"name":"a"},"right":[{"type":258,"value":"1"}]},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "postfix NOT IN (1) after NOT BETWEEN": {"source":"SELECT a NOT BETWEEN b NOT IN (1) FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":332,"left":{"type":355,"name":"a"},"right":{"type":323,"left":{"type":355,"name":"b"},"right":[{"type":258,"value":"1"}]}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "postfix NOT IN (1) before NOT BETWEEN": {"source":"SELECT a NOT IN (1) NOT BETWEEN b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":332,"left":{"type":323,"left":{"type":355,"name":"a"},"right":[{"type":258,"value":"1"}]},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "postfix NOT IN (1) after =": {"source":"SELECT a = b NOT IN (1) FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":61,"left":{"type":355,"name":"a"},"right":{"type":323,"left":{"type":355,"name":"b"},"right":[{"type":258,"value":"1"}]}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "postfix NOT IN (1) before =": {"source":"SELECT a NOT IN (1) = b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":61,"left":{"type":323,"left":{"type":355,"name":"a"},"right":[{"type":258,"value":"1"}]},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "postfix NOT IN (1) after @@": {"source":"SELECT a @@ b NOT IN (1) FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":401,"left":{"type":355,"name":"a"},"right":{"type":323,"left":{"type":355,"name":"b"},"right":[{"type":258,"value":"1"}]}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "postfix NOT IN (1) before @@": {"source":"SELECT a NOT IN (1) @@ b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":401,"left":{"type":323,"left":{"type":355,"name":"a"},"right":[{"type":258,"value":"1"}]},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "postfix NOT IN (1) after AND": {"source":"SELECT a AND b NOT IN (1) FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":266,"left":{"type":355,"name":"a"},"right":{"type":323,"left":{"type":355,"name":"b"},"right":[{"type":258,"value":"1"}]}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "postfix NOT IN (1) before AND": {"source":"SELECT a NOT IN (1) AND b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":266,"left":{"type":323,"left":{"type":355,"name":"a"},"right":[{"type":258,"value":"1"}]},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "postfix NOT IN (1) after OR": {"source":"SELECT a OR b NOT IN (1) FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":267,"left":{"type":355,"name":"a"},"right":{"type":323,"left":{"type":355,"name":"b"},"right":[{"type":258,"value":"1"}]}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "postfix NOT IN (1) before OR": {"source":"SELECT a NOT IN (1) OR b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":267,"left":{"type":323,"left":{"type":355,"name":"a"},"right":[{"type":258,"value":"1"}]},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "postfix NOT IN (1) after LIKE": {"source":"SELECT a LIKE b NOT IN (1) FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":268,"left":{"type":355,"name":"a"},"right":{"type":323,"left":{"type":355,"name":"b"},"right":[{"type":258,"value":"1"}]}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "postfix NOT IN (1) before LIKE": {"source":"SELECT a NOT IN (1) LIKE b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":268,"left":{"type":323,"left":{"type":355,"name":"a"},"right":[{"type":258,"value":"1"}]},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "postfix NOT IN (1) after NOT LIKE": {"source":"SELECT a NOT LIKE b NOT IN (1) FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":323,"left":{"type":355,"name":"b"},"right":[{"type":258,"value":"1"}]}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "postfix NOT IN (1) before NOT LIKE": {"source":"SELECT a NOT IN (1) NOT LIKE b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":351,"left":{"type":323,"left":{"type":355,"name":"a"},"right":[{"type":258,"value":"1"}]},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "postfix NOT IN (1) after ILIKE": {"source":"SELECT a ILIKE b NOT IN (1) FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":275,"left":{"type":355,"name":"a"},"right":{"type":323,"left":{"type":355,"name":"b"},"right":[{"type":258,"value":"1"}]}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "postfix NOT IN (1) before ILIKE": {"source":"SELECT a NOT IN (1) ILIKE b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":275,"left":{"type":323,"left":{"type":355,"name":"a"},"right":[{"type":258,"value":"1"}]},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "postfix NOT IN (1) after NOT ILIKE": {"source":"SELECT a NOT ILIKE b NOT IN (1) FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":357,"left":{"type":355,"name":"a"},"right":{"type":323,"left":{"type":355,"name":"b"},"right":[{"type":258,"value":"1"}]}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "postfix NOT IN (1) before NOT ILIKE": {"source":"SELECT a NOT IN (1) NOT ILIKE b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":357,"left":{"type":323,"left":{"type":355,"name":"a"},"right":[{"type":258,"value":"1"}]},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "postfix NOT IN (1) after &": {"source":"SELECT a & b NOT IN (1) FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":38,"left":{"type":355,"name":"a"},"right":{"type":323,"left":{"type":355,"name":"b"},"right":[{"type":258,"value":"1"}]}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "postfix NOT IN (1) before &": {"source":"SELECT a NOT IN (1) & b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":38,"left":{"type":323,"left":{"type":355,"name":"a"},"right":[{"type":258,"value":"1"}]},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "postfix NOT IN (1) after ^": {"source":"SELECT a ^ b NOT IN (1) FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":94,"left":{"type":355,"name":"a"},"right":{"type":323,"left":{"type":355,"name":"b"},"right":[{"type":258,"value":"1"}]}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "postfix NOT IN (1) before ^": {"source":"SELECT a NOT IN (1) ^ b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":94,"left":{"type":323,"left":{"type":355,"name":"a"},"right":[{"type":258,"value":"1"}]},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "postfix NOT IN (1) after *": {"source":"SELECT a * b NOT IN (1) FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":42,"left":{"type":355,"name":"a"},"right":{"type":323,"left":{"type":355,"name":"b"},"right":[{"type":258,"value":"1"}]}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "postfix NOT IN (1) before *": {"source":"SELECT a NOT IN (1) * b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":42,"left":{"type":323,"left":{"type":355,"name":"a"},"right":[{"type":258,"value":"1"}]},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "postfix NOT IN (1) after %": {"source":"SELECT a % b NOT IN (1) FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":37,"left":{"type":355,"name":"a"},"right":{"type":323,"left":{"type":355,"name":"b"},"right":[{"type":258,"value":"1"}]}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "postfix NOT IN (1) before %": {"source":"SELECT a NOT IN (1) % b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":37,"left":{"type":323,"left":{"type":355,"name":"a"},"right":[{"type":258,"value":"1"}]},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "postfix NOT IN (1) after +": {"source":"SELECT a + b NOT IN (1) FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":323,"left":{"type":355,"name":"b"},"right":[{"type":258,"value":"1"}]}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "postfix NOT IN (1) before +": {"source":"SELECT a NOT IN (1) + b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":43,"left":{"type":323,"left":{"type":355,"name":"a"},"right":[{"type":258,"value":"1"}]},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "postfix NOT IN (1) after -": {"source":"SELECT a - b NOT IN (1) FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":45,"left":{"type":355,"name":"a"},"right":{"type":323,"left":{"type":355,"name":"b"},"right":[{"type":258,"value":"1"}]}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "postfix NOT IN (1) before -": {"source":"SELECT a NOT IN (1) - b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":45,"left":{"type":323,"left":{"type":355,"name":"a"},"right":[{"type":258,"value":"1"}]},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "postfix NOT IN (1) after ||": {"source":"SELECT a || b NOT IN (1) FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":405,"left":{"type":355,"name":"a"},"right":{"type":323,"left":{"type":355,"name":"b"},"right":[{"type":258,"value":"1"}]}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "postfix NOT IN (1) before ||": {"source":"SELECT a NOT IN (1) || b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":405,"left":{"type":323,"left":{"type":355,"name":"a"},"right":[{"type":258,"value":"1"}]},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "postfix NOT IN (1) after ->": {"source":"SELECT a -> b NOT IN (1) FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":323,"left":{"type":406,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":[{"type":258,"value":"1"}]}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "postfix NOT IN (1) before ->": {"source":"SELECT a NOT IN (1) -> b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":406,"left":{"type":323,"left":{"type":355,"name":"a"},"right":[{"type":258,"value":"1"}]},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "postfix NOT IN (1) after #>>": {"source":"SELECT a #>> b NOT IN (1) FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":323,"left":{"type":418,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":[{"type":258,"value":"1"}]}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "postfix NOT IN (1) before #>>": {"source":"SELECT a NOT IN (1) #>> b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":418,"left":{"type":323,"left":{"type":355,"name":"a"},"right":[{"type":258,"value":"1"}]},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "postfix NOT IN (1) after prefix -": {"source":"SELECT - a NOT IN (1) FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":367,"right":{"type":323,"left":{"type":355,"name":"a"},"right":[{"type":258,"value":"1"}]}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "postfix NOT IN (1) after prefix NOT": {"source":"SELECT NOT a NOT IN (1) FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":33,"right":{"type":323,"left":{"type":355,"name":"a"},"right":[{"type":258,"value":"1"}]}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "postfix NOT IN (1) after prefix ~": {"source":"SELECT ~ a NOT IN (1) FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":126,"right":{"type":323,"left":{"type":355,"name":"a"},"right":[{"type":258,"value":"1"}]}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "postfix NOT IN (1) then IS NULL": {"source":"SELECT a NOT IN (1) IS NULL FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":365,"left":{"type":323,"left":{"type":355,"name":"a"},"right":[{"type":258,"value":"1"}]}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "postfix NOT IN (1) then IS NOT NULL": {"source":"SELECT a NOT IN (1) IS NOT NULL FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":366,"left":{"type":323,"left":{"type":355,"name":"a"},"right":[{"type":258,"value":"1"}]}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "postfix NOT IN (1) then IN (1)": {"source":"SELECT a NOT IN (1) IN (1) FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":315,"left":{"type":323,"left":{"type":355,"name":"a"},"right":[{"type":258,"value":"1"}]},"right":[{"type":258,"value":"1"}]}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "postfix NOT IN (1) then NOT IN (1)": {"source":"SELECT a NOT IN (1) NOT IN (1) FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":323,"left":{"type":323,"left":{"type":355,"name":"a"},"right":[{"type":258,"value":"1"}]},"right":[{"type":258,"value":"1"}]}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "postfix NOT IN (1) then IN (SELECT x FROM s)": {"source":"SELECT a NOT IN (1) IN (SELECT x FROM s) FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":315,"left":{"type":323,"left":{"type":355,"name":"a"},"right":[{"type":258,"value":"1"}]},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"x"}}],"tables":{"qualifiedName":{"type":355,"name":"s"}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "postfix IN (SELECT x FROM s) after AGAINST": {"source":"SELECT a AGAINST b IN (SELECT x FROM s) FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":315,"left":{"type":355,"name":"b"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"x"}}],"tables":{"qualifiedName":{"type":355,"name":"s"}}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":315,"left":{"type":355,"name":"b"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"x"}}],"tables":{"qualifiedName":{"type":355,"name":"s"}}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IN (SELECT x FROM s) before AGAINST": {"source":"SELECT a IN (SELECT x FROM s) AGAINST b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":276,"left":{"type":315,"left":{"type":355,"name":"a"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"x"}}],"tables":{"qualifiedName":{"type":355,"name":"s"}}}}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":276,"left":{"type":315,"left":{"type":355,"name":"a"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"x"}}],"tables":{"qualifiedName":{"type":355,"name":"s"}}}}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IN (SELECT x FROM s) after BETWEEN": {"source":"SELECT a BETWEEN b IN (SELECT x FROM s) FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":331,"left":{"type":355,"name":"a"},"right":{"type":315,"left":{"type":355,"name":"b"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"x"}}],"tables":{"qualifiedName":{"type":355,"name":"s"}}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":331,"left":{"type":355,"name":"a"},"right":{"type":315,"left":{"type":355,"name":"b"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"x"}}],"tables":{"qualifiedName":{"type":355,"name":"s"}}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IN (SELECT x FROM s) before BETWEEN": {"source":"SELECT a IN (SELECT x FROM s) BETWEEN b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":331,"left":{"type":315,"left":{"type":355,"name":"a"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"x"}}],"tables":{"qualifiedName":{"type":355,"name":"s"}}}}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":331,"left":{"type":315,"left":{"type":355,"name":"a"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"x"}}],"tables":{"qualifiedName":{"type":355,"name":"s"}}}}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IN (SELECT x FROM s) after NOT BETWEEN": {"source":"SELECT a NOT BETWEEN b IN (SELECT x FROM s) FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":332,"left":{"type":355,"name":"a"},"right":{"type":315,"left":{"type":355,"name":"b"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"x"}}],"tables":{"qualifiedName":{"type":355,"name":"s"}}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":332,"left":{"type":355,"name":"a"},"right":{"type":315,"left":{"type":355,"name":"b"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"x"}}],"tables":{"qualifiedName":{"type":355,"name":"s"}}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IN (SELECT x FROM s) before NOT BETWEEN": {"source":"SELECT a IN (SELECT x FROM s) NOT BETWEEN b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":332,"left":{"type":315,"left":{"type":355,"name":"a"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"x"}}],"tables":{"qualifiedName":{"type":355,"name":"s"}}}}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":332,"left":{"type":315,"left":{"type":355,"name":"a"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"x"}}],"tables":{"qualifiedName":{"type":355,"name":"s"}}}}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IN (SELECT x FROM s) after =": {"source":"SELECT a = b IN (SELECT x FROM s) FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":61,"left":{"type":355,"name":"a"},"right":{"type":315,"left":{"type":355,"name":"b"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"x"}}],"tables":{"qualifiedName":{"type":355,"name":"s"}}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":61,"left":{"type":355,"name":"a"},"right":{"type":315,"left":{"type":355,"name":"b"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"x"}}],"tables":{"qualifiedName":{"type":355,"name":"s"}}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IN (SELECT x FROM s) before =": {"source":"SELECT a IN (SELECT x FROM s) = b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":61,"left":{"type":315,"left":{"type":355,"name":"a"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"x"}}],"tables":{"qualifiedName":{"type":355,"name":"s"}}}}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":61,"left":{"type":315,"left":{"type":355,"name":"a"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"x"}}],"tables":{"qualifiedName":{"type":355,"name":"s"}}}}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IN (SELECT x FROM s) after @@": {"source":"SELECT a @@ b IN (SELECT x FROM s) FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":401,"left":{"type":355,"name":"a"},"right":{"type":315,"left":{"type":355,"name":"b"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"x"}}],"tables":{"qualifiedName":{"type":355,"name":"s"}}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":401,"left":{"type":355,"name":"a"},"right":{"type":315,"left":{"type":355,"name":"b"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"x"}}],"tables":{"qualifiedName":{"type":355,"name":"s"}}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IN (SELECT x FROM s) before @@": {"source":"SELECT a IN (SELECT x FROM s) @@ b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":401,"left":{"type":315,"left":{"type":355,"name":"a"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"x"}}],"tables":{"qualifiedName":{"type":355,"name":"s"}}}}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":401,"left":{"type":315,"left":{"type":355,"name":"a"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"x"}}],"tables":{"qualifiedName":{"type":355,"name":"s"}}}}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IN (SELECT x FROM s) after AND": {"source":"SELECT a AND b IN (SELECT x FROM s) FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":266,"left":{"type":355,"name":"a"},"right":{"type":315,"left":{"type":355,"name":"b"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"x"}}],"tables":{"qualifiedName":{"type":355,"name":"s"}}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":266,"left":{"type":355,"name":"a"},"right":{"type":315,"left":{"type":355,"name":"b"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"x"}}],"tables":{"qualifiedName":{"type":355,"name":"s"}}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IN (SELECT x FROM s) before AND": {"source":"SELECT a IN (SELECT x FROM s) AND b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":266,"left":{"type":315,"left":{"type":355,"name":"a"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"x"}}],"tables":{"qualifiedName":{"type":355,"name":"s"}}}}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":266,"left":{"type":315,"left":{"type":355,"name":"a"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"x"}}],"tables":{"qualifiedName":{"type":355,"name":"s"}}}}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IN (SELECT x FROM s) after OR": {"source":"SELECT a OR b IN (SELECT x FROM s) FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":267,"left":{"type":355,"name":"a"},"right":{"type":315,"left":{"type":355,"name":"b"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"x"}}],"tables":{"qualifiedName":{"type":355,"name":"s"}}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":267,"left":{"type":355,"name":"a"},"right":{"type":315,"left":{"type":355,"name":"b"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"x"}}],"tables":{"qualifiedName":{"type":355,"name":"s"}}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IN (SELECT x FROM s) before OR": {"source":"SELECT a IN (SELECT x FROM s) OR b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":267,"left":{"type":315,"left":{"type":355,"name":"a"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"x"}}],"tables":{"qualifiedName":{"type":355,"name":"s"}}}}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":267,"left":{"type":315,"left":{"type":355,"name":"a"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"x"}}],"tables":{"qualifiedName":{"type":355,"name":"s"}}}}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IN (SELECT x FROM s) after LIKE": {"source":"SELECT a LIKE b IN (SELECT x FROM s) FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":268,"left":{"type":355,"name":"a"},"right":{"type":315,"left":{"type":355,"name":"b"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"x"}}],"tables":{"qualifiedName":{"type":355,"name":"s"}}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":268,"left":{"type":355,"name":"a"},"right":{"type":315,"left":{"type":355,"name":"b"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"x"}}],"tables":{"qualifiedName":{"type":355,"name":"s"}}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IN (SELECT x FROM s) before LIKE": {"source":"SELECT a IN (SELECT x FROM s) LIKE b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":268,"left":{"type":315,"left":{"type":355,"name":"a"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"x"}}],"tables":{"qualifiedName":{"type":355,"name":"s"}}}}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":268,"left":{"type":315,"left":{"type":355,"name":"a"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"x"}}],"tables":{"qualifiedName":{"type":355,"name":"s"}}}}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IN (SELECT x FROM s) after NOT LIKE": {"source":"SELECT a NOT LIKE b IN (SELECT x FROM s) FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":315,"left":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"x"}}],"tables":{"qualifiedName":{"type":355,"name":"s"}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":315,"left":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"x"}}],"tables":{"qualifiedName":{"type":355,"name":"s"}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IN (SELECT x FROM s) before NOT LIKE": {"source":"SELECT a IN (SELECT x FROM s) NOT LIKE b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":351,"left":{"type":315,"left":{"type":355,"name":"a"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"x"}}],"tables":{"qualifiedName":{"type":355,"name":"s"}}}}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":351,"left":{"type":315,"left":{"type":355,"name":"a"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"x"}}],"tables":{"qualifiedName":{"type":355,"name":"s"}}}}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IN (SELECT x FROM s) after ILIKE": {"source":"SELECT a ILIKE b IN (SELECT x FROM s) FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":275,"left":{"type":355,"name":"a"},"right":{"type":315,"left":{"type":355,"name":"b"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"x"}}],"tables":{"qualifiedName":{"type":355,"name":"s"}}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":275,"left":{"type":355,"name":"a"},"right":{"type":315,"left":{"type":355,"name":"b"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"x"}}],"tables":{"qualifiedName":{"type":355,"name":"s"}}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IN (SELECT x FROM s) before ILIKE": {"source":"SELECT a IN (SELECT x FROM s) ILIKE b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":275,"left":{"type":315,"left":{"type":355,"name":"a"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"x"}}],"tables":{"qualifiedName":{"type":355,"name":"s"}}}}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":275,"left":{"type":315,"left":{"type":355,"name":"a"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"x"}}],"tables":{"qualifiedName":{"type":355,"name":"s"}}}}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IN (SELECT x FROM s) after NOT ILIKE": {"source":"SELECT a NOT ILIKE b IN (SELECT x FROM s) FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":315,"left":{"type":357,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"x"}}],"tables":{"qualifiedName":{"type":355,"name":"s"}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":315,"left":{"type":357,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"x"}}],"tables":{"qualifiedName":{"type":355,"name":"s"}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IN (SELECT x FROM s) before NOT ILIKE": {"source":"SELECT a IN (SELECT x FROM s) NOT ILIKE b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":357,"left":{"type":315,"left":{"type":355,"name":"a"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"x"}}],"tables":{"qualifiedName":{"type":355,"name":"s"}}}}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":357,"left":{"type":315,"left":{"type":355,"name":"a"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"x"}}],"tables":{"qualifiedName":{"type":355,"name":"s"}}}}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IN (SELECT x FROM s) after &": {"source":"SELECT a & b IN (SELECT x FROM s) FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":38,"left":{"type":355,"name":"a"},"right":{"type":315,"left":{"type":355,"name":"b"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"x"}}],"tables":{"qualifiedName":{"type":355,"name":"s"}}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":38,"left":{"type":355,"name":"a"},"right":{"type":315,"left":{"type":355,"name":"b"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"x"}}],"tables":{"qualifiedName":{"type":355,"name":"s"}}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IN (SELECT x FROM s) before &": {"source":"SELECT a IN (SELECT x FROM s) & b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":38,"left":{"type":315,"left":{"type":355,"name":"a"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"x"}}],"tables":{"qualifiedName":{"type":355,"name":"s"}}}}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":38,"left":{"type":315,"left":{"type":355,"name":"a"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"x"}}],"tables":{"qualifiedName":{"type":355,"name":"s"}}}}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IN (SELECT x FROM s) after ^": {"source":"SELECT a ^ b IN (SELECT x FROM s) FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":94,"left":{"type":355,"name":"a"},"right":{"type":315,"left":{"type":355,"name":"b"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"x"}}],"tables":{"qualifiedName":{"type":355,"name":"s"}}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":94,"left":{"type":355,"name":"a"},"right":{"type":315,"left":{"type":355,"name":"b"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"x"}}],"tables":{"qualifiedName":{"type":355,"name":"s"}}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IN (SELECT x FROM s) before ^": {"source":"SELECT a IN (SELECT x FROM s) ^ b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":94,"left":{"type":315,"left":{"type":355,"name":"a"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"x"}}],"tables":{"qualifiedName":{"type":355,"name":"s"}}}}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":94,"left":{"type":315,"left":{"type":355,"name":"a"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"x"}}],"tables":{"qualifiedName":{"type":355,"name":"s"}}}}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IN (SELECT x FROM s) after *": {"source":"SELECT a * b IN (SELECT x FROM s) FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":42,"left":{"type":355,"name":"a"},"right":{"type":315,"left":{"type":355,"name":"b"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"x"}}],"tables":{"qualifiedName":{"type":355,"name":"s"}}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":42,"left":{"type":355,"name":"a"},"right":{"type":315,"left":{"type":355,"name":"b"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"x"}}],"tables":{"qualifiedName":{"type":355,"name":"s"}}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IN (SELECT x FROM s) before *": {"source":"SELECT a IN (SELECT x FROM s) * b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":42,"left":{"type":315,"left":{"type":355,"name":"a"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"x"}}],"tables":{"qualifiedName":{"type":355,"name":"s"}}}}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":42,"left":{"type":315,"left":{"type":355,"name":"a"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"x"}}],"tables":{"qualifiedName":{"type":355,"name":"s"}}}}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IN (SELECT x FROM s) after %": {"source":"SELECT a % b IN (SELECT x FROM s) FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":37,"left":{"type":355,"name":"a"},"right":{"type":315,"left":{"type":355,"name":"b"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"x"}}],"tables":{"qualifiedName":{"type":355,"name":"s"}}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":37,"left":{"type":355,"name":"a"},"right":{"type":315,"left":{"type":355,"name":"b"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"x"}}],"tables":{"qualifiedName":{"type":355,"name":"s"}}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IN (SELECT x FROM s) before %": {"source":"SELECT a IN (SELECT x FROM s) % b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":37,"left":{"type":315,"left":{"type":355,"name":"a"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"x"}}],"tables":{"qualifiedName":{"type":355,"name":"s"}}}}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":37,"left":{"type":315,"left":{"type":355,"name":"a"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"x"}}],"tables":{"qualifiedName":{"type":355,"name":"s"}}}}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IN (SELECT x FROM s) after +": {"source":"SELECT a + b IN (SELECT x FROM s) FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":315,"left":{"type":355,"name":"b"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"x"}}],"tables":{"qualifiedName":{"type":355,"name":"s"}}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":315,"left":{"type":355,"name":"b"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"x"}}],"tables":{"qualifiedName":{"type":355,"name":"s"}}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IN (SELECT x FROM s) before +": {"source":"SELECT a IN (SELECT x FROM s) + b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":43,"left":{"type":315,"left":{"type":355,"name":"a"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"x"}}],"tables":{"qualifiedName":{"type":355,"name":"s"}}}}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":43,"left":{"type":315,"left":{"type":355,"name":"a"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"x"}}],"tables":{"qualifiedName":{"type":355,"name":"s"}}}}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IN (SELECT x FROM s) after -": {"source":"SELECT a - b IN (SELECT x FROM s) FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":45,"left":{"type":355,"name":"a"},"right":{"type":315,"left":{"type":355,"name":"b"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"x"}}],"tables":{"qualifiedName":{"type":355,"name":"s"}}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":45,"left":{"type":355,"name":"a"},"right":{"type":315,"left":{"type":355,"name":"b"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"x"}}],"tables":{"qualifiedName":{"type":355,"name":"s"}}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IN (SELECT x FROM s) before -": {"source":"SELECT a IN (SELECT x FROM s) - b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":45,"left":{"type":315,"left":{"type":355,"name":"a"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"x"}}],"tables":{"qualifiedName":{"type":355,"name":"s"}}}}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":45,"left":{"type":315,"left":{"type":355,"name":"a"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"x"}}],"tables":{"qualifiedName":{"type":355,"name":"s"}}}}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IN (SELECT x FROM s) after ||": {"source":"SELECT a || b IN (SELECT x FROM s) FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":405,"left":{"type":355,"name":"a"},"right":{"type":315,"left":{"type":355,"name":"b"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"x"}}],"tables":{"qualifiedName":{"type":355,"name":"s"}}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":405,"left":{"type":355,"name":"a"},"right":{"type":315,"left":{"type":355,"name":"b"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"x"}}],"tables":{"qualifiedName":{"type":355,"name":"s"}}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IN (SELECT x FROM s) before ||": {"source":"SELECT a IN (SELECT x FROM s) || b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":405,"left":{"type":315,"left":{"type":355,"name":"a"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"x"}}],"tables":{"qualifiedName":{"type":355,"name":"s"}}}}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":405,"left":{"type":315,"left":{"type":355,"name":"a"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"x"}}],"tables":{"qualifiedName":{"type":355,"name":"s"}}}}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IN (SELECT x FROM s) after ->": {"source":"SELECT a -> b IN (SELECT x FROM s) FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":315,"left":{"type":406,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"x"}}],"tables":{"qualifiedName":{"type":355,"name":"s"}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":315,"left":{"type":406,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"x"}}],"tables":{"qualifiedName":{"type":355,"name":"s"}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IN (SELECT x FROM s) before ->": {"source":"SELECT a IN (SELECT x FROM s) -> b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":406,"left":{"type":315,"left":{"type":355,"name":"a"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"x"}}],"tables":{"qualifiedName":{"type":355,"name":"s"}}}}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":406,"left":{"type":315,"left":{"type":355,"name":"a"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"x"}}],"tables":{"qualifiedName":{"type":355,"name":"s"}}}}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IN (SELECT x FROM s) after #>>": {"source":"SELECT a #>> b IN (SELECT x FROM s) FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":315,"left":{"type":418,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"x"}}],"tables":{"qualifiedName":{"type":355,"name":"s"}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":315,"left":{"type":418,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"x"}}],"tables":{"qualifiedName":{"type":355,"name":"s"}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IN (SELECT x FROM s) before #>>": {"source":"SELECT a IN (SELECT x FROM s) #>> b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":418,"left":{"type":315,"left":{"type":355,"name":"a"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"x"}}],"tables":{"qualifiedName":{"type":355,"name":"s"}}}}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":418,"left":{"type":315,"left":{"type":355,"name":"a"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"x"}}],"tables":{"qualifiedName":{"type":355,"name":"s"}}}}},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IN (SELECT x FROM s) after prefix -": {"source":"SELECT - a IN (SELECT x FROM s) FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":367,"right":{"type":315,"left":{"type":355,"name":"a"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"x"}}],"tables":{"qualifiedName":{"type":355,"name":"s"}}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":367,"right":{"type":315,"left":{"type":355,"name":"a"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"x"}}],"tables":{"qualifiedName":{"type":355,"name":"s"}}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IN (SELECT x FROM s) after prefix NOT": {"source":"SELECT NOT a IN (SELECT x FROM s) FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":315,"left":{"type":33,"right":{"type":355,"name":"a"}},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"x"}}],"tables":{"qualifiedName":{"type":355,"name":"s"}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":315,"left":{"type":33,"right":{"type":355,"name":"a"}},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"x"}}],"tables":{"qualifiedName":{"type":355,"name":"s"}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IN (SELECT x FROM s) after prefix ~": {"source":"SELECT ~ a IN (SELECT x FROM s) FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":315,"left":{"type":126,"right":{"type":355,"name":"a"}},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"x"}}],"tables":{"qualifiedName":{"type":355,"name":"s"}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":315,"left":{"type":126,"right":{"type":355,"name":"a"}},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"x"}}],"tables":{"qualifiedName":{"type":355,"name":"s"}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IN (SELECT x FROM s) then IS NULL": {"source":"SELECT a IN (SELECT x FROM s) IS NULL FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":365,"left":{"type":315,"left":{"type":355,"name":"a"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"x"}}],"tables":{"qualifiedName":{"type":355,"name":"s"}}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":365,"left":{"type":315,"left":{"type":355,"name":"a"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"x"}}],"tables":{"qualifiedName":{"type":355,"name":"s"}}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IN (SELECT x FROM s) then IS NOT NULL": {"source":"SELECT a IN (SELECT x FROM s) IS NOT NULL FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":366,"left":{"type":315,"left":{"type":355,"name":"a"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"x"}}],"tables":{"qualifiedName":{"type":355,"name":"s"}}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":366,"left":{"type":315,"left":{"type":355,"name":"a"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"x"}}],"tables":{"qualifiedName":{"type":355,"name":"s"}}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "postfix IN (SELECT x FROM s) then IN (1)": {"source":"SELECT a IN (SELECT x FROM s) IN (1) FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":315,"left":{"type":315,"left":{"type":355,"name":"a"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"x"}}],"tables":{"qualifiedName":{"type":355,"name":"s"}}}}},"right":[{"type":258,"value":"1"}]}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "postfix IN (SELECT x FROM s) then NOT IN (1)": {"source":"SELECT a IN (SELECT x FROM s) NOT IN (1) FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":323,"left":{"type":315,"left":{"type":355,"name":"a"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"x"}}],"tables":{"qualifiedName":{"type":355,"name":"s"}}}}},"right":[{"type":258,"value":"1"}]}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "postfix IN (SELECT x FROM s) then IN (SELECT x FROM s)": {"source":"SELECT a IN (SELECT x FROM s) IN (SELECT x FROM s) FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":315,"left":{"type":315,"left":{"type":355,"name":"a"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"x"}}],"tables":{"qualifiedName":{"type":355,"name":"s"}}}}},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"x"}}],"tables":{"qualifiedName":{"type":355,"name":"s"}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":315,"left":{"type":315,"left":{"type":355,"name":"a"},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"x"}}],"tables":{"qualifiedName":{"type":355,"name":"s"}}}}},"right":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"x"}}],"tables":{"qualifiedName":{"type":355,"name":"s"}}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "where and or eq": {"source":"SELECT * FROM r WHERE a = 1 AND b > 0 OR c < 2","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":60,"left":{"type":62,"left":{"type":61,"left":{"type":355,"name":"a"},"right":{"type":266,"left":{"type":258,"value":"1"},"right":{"type":355,"name":"b"}}},"right":{"type":267,"left":{"type":258,"value":"0"},"right":{"type":355,"name":"c"}}},"right":{"type":258,"value":"2"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "between and": {"source":"SELECT * FROM r WHERE a BETWEEN 1 AND 2","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":331,"left":{"type":355,"name":"a"},"right":{"type":266,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "between and and": {"source":"SELECT * FROM r WHERE a BETWEEN 1 AND 2 AND b = 3","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":331,"left":{"type":355,"name":"a"},"right":{"type":61,"left":{"type":266,"left":{"type":266,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},"right":{"type":355,"name":"b"}},"right":{"type":258,"value":"3"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "not between and": {"source":"SELECT * FROM r WHERE a NOT BETWEEN 1 + 2 AND 3 * 4","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":332,"left":{"type":355,"name":"a"},"right":{"type":266,"left":{"type":43,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},"right":{"type":42,"left":{"type":258,"value":"3"},"right":{"type":258,"value":"4"}}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "not as infix then eq": {"source":"SELECT * FROM r WHERE a NOT LIKE b = c","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":61,"left":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":61,"left":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}}}, + "not without like": {"source":"SELECT * FROM r WHERE a NOT b","parse":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "not not like": {"source":"SELECT * FROM r WHERE NOT a NOT LIKE b","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":33,"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":33,"right":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}}}}, + "is not null not": {"source":"SELECT * FROM r WHERE NOT a IS NOT NULL","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":366,"left":{"type":33,"right":{"type":355,"name":"a"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":366,"left":{"type":33,"right":{"type":355,"name":"a"}}}}}}, + "paren groups": {"source":"SELECT (a + b) * (c - d) FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":42,"left":{"type":356,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}},"right":{"type":356,"left":{"type":45,"left":{"type":355,"name":"c"},"right":{"type":355,"name":"d"}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":42,"left":{"type":356,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}},"right":{"type":356,"left":{"type":45,"left":{"type":355,"name":"c"},"right":{"type":355,"name":"d"}}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "nested parens": {"source":"SELECT ((a)) FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":356,"left":{"type":356,"left":{"type":355,"name":"a"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":356,"left":{"type":356,"left":{"type":355,"name":"a"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "json chain": {"source":"SELECT a->b->>c#>d FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":417,"left":{"type":416,"left":{"type":406,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}},"right":{"type":355,"name":"d"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":417,"left":{"type":416,"left":{"type":406,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}},"right":{"type":355,"name":"d"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "concat chain": {"source":"SELECT a || b || c FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":405,"left":{"type":405,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":405,"left":{"type":405,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "minus minus": {"source":"SELECT a - - b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":45,"left":{"type":355,"name":"a"},"right":{"type":367,"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":45,"left":{"type":355,"name":"a"},"right":{"type":367,"right":{"type":355,"name":"b"}}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "minus chain literal": {"source":"SELECT 1 - 2 - 3 FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":45,"left":{"type":45,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}},"right":{"type":258,"value":"3"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "div chain": {"source":"SELECT 8 / 4 / 2 FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":47,"left":{"type":47,"left":{"type":258,"value":"8"},"right":{"type":258,"value":"4"}},"right":{"type":258,"value":"2"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "against chain": {"source":"SELECT * FROM r WHERE a AGAINST b AGAINST c","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":276,"left":{"type":355,"name":"a"},"right":{"type":276,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}}}, + "like chain": {"source":"SELECT * FROM r WHERE a LIKE b LIKE c","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":268,"left":{"type":268,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":268,"left":{"type":268,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}}}}}, + "not like chain": {"source":"SELECT * FROM r WHERE a NOT LIKE b NOT LIKE c","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":351,"left":{"type":355,"name":"a"},"right":{"type":351,"left":{"type":355,"name":"b"},"right":{"type":355,"name":"c"}}}}}}, + "in after in": {"source":"SELECT * FROM r WHERE a IN (1) IN (2)","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":315,"left":{"type":315,"left":{"type":355,"name":"a"},"right":[{"type":258,"value":"1"}]},"right":[{"type":258,"value":"2"}]}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "case in expr": {"source":"SELECT CASE a + 1 WHEN b * 2 THEN c - 3 ELSE d / 4 END + 5 FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":43,"left":{"type":409,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":258,"value":"1"}},"right":[{"type":410,"left":{"type":42,"left":{"type":355,"name":"b"},"right":{"type":258,"value":"2"}},"right":{"type":45,"left":{"type":355,"name":"c"},"right":{"type":258,"value":"3"}}},{"type":411,"left":{"type":47,"left":{"type":355,"name":"d"},"right":{"type":258,"value":"4"}}}]},"right":{"type":258,"value":"5"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "fcall in expr": {"source":"SELECT f(a) + g(b) * 2 FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":42,"left":{"type":43,"left":{"type":350,"name":"f","arguments":[{"type":355,"name":"a"}]},"right":{"type":350,"name":"g","arguments":[{"type":355,"name":"b"}]}},"right":{"type":258,"value":"2"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "cast in expr": {"source":"SELECT CAST(a AS INT) + 1 FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":43,"left":{"type":333,"left":{"type":355,"name":"a"},"right":{"type":358,"name":"INT"}},"right":{"type":258,"value":"1"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "exists and": {"source":"SELECT * FROM r WHERE EXISTS (SELECT * FROM s) AND a = 1","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":61,"left":{"type":266,"left":{"type":408,"right":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"s"}}}}},"right":{"type":355,"name":"a"}},"right":{"type":258,"value":"1"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "subquery plus": {"source":"SELECT (SELECT 1 FROM s) + 1 FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":43,"left":{"type":407,"left":{"type":309,"select":{"columns":[{"type":354,"column":{"type":258,"value":"1"}}],"tables":{"qualifiedName":{"type":355,"name":"s"}}}}},"right":{"type":258,"value":"1"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "placeholder arithmetic": {"source":"SELECT :a: + ?0 * {b} FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":42,"left":{"type":43,"left":{"type":274,"value":"a"},"right":{"type":273,"value":"?0"}},"right":{"type":277,"value":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":42,"left":{"type":43,"left":{"type":274,"value":"a"},"right":{"type":273,"value":"?0"}},"right":{"type":277,"value":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "order by precedence": {"source":"SELECT * FROM r ORDER BY a + b DESC, c AND d","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"orderBy":[{"column":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"sort":328},{"column":{"type":266,"left":{"type":355,"name":"c"},"right":{"type":355,"name":"d"}}}]}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"orderBy":[{"column":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"sort":328},{"column":{"type":266,"left":{"type":355,"name":"c"},"right":{"type":355,"name":"d"}}}]}}}, + "having precedence": {"source":"SELECT * FROM r GROUP BY a HAVING a = 1 OR b = 2 AND c = 3","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"groupBy":{"type":355,"name":"a"},"having":{"type":61,"left":{"type":61,"left":{"type":61,"left":{"type":355,"name":"a"},"right":{"type":267,"left":{"type":258,"value":"1"},"right":{"type":355,"name":"b"}}},"right":{"type":266,"left":{"type":258,"value":"2"},"right":{"type":355,"name":"c"}}},"right":{"type":258,"value":"3"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "join on precedence": {"source":"SELECT * FROM r JOIN s ON r.a = s.a AND r.b = s.b","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}},"joins":{"type":360,"qualified":{"type":355,"name":"s"},"conditions":{"type":61,"left":{"type":61,"left":{"type":355,"domain":"r","name":"a"},"right":{"type":266,"left":{"type":355,"domain":"s","name":"a"},"right":{"type":355,"domain":"r","name":"b"}}},"right":{"type":355,"domain":"s","name":"b"}}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}},"joins":{"type":360,"qualified":{"type":355,"name":"s"},"conditions":{"type":61,"left":{"type":61,"left":{"type":355,"domain":"r","name":"a"},"right":{"type":266,"left":{"type":355,"domain":"s","name":"a"},"right":{"type":355,"domain":"r","name":"b"}}},"right":{"type":355,"domain":"s","name":"b"}}}}}}} + } +} diff --git a/tests/fixtures/parity/precedence.php b/tests/fixtures/parity/precedence.php new file mode 100644 index 0000000..d087939 --- /dev/null +++ b/tests/fixtures/parity/precedence.php @@ -0,0 +1,91 @@ +', '#>>', +]; +$every = [ + 'AGAINST', 'BETWEEN', 'NOT BETWEEN', '=', '!=', '<>', '<', '>', '>=', '<=', '@@', '@>', '<@', '&&', + 'AND', 'OR', 'LIKE', 'ILIKE', 'NOT LIKE', 'NOT ILIKE', '&', '|', '^', '/', '*', '%', '+', '-', '||', + '->', '->>', '#>', '#>>', +]; +$prefix = ['-', 'NOT', '~']; +$postfix = ['IS NULL', 'IS NOT NULL', 'IN (1)', 'NOT IN (1)', 'IN (SELECT x FROM s)']; + +$cases = []; + +foreach ($every as $op) { + $cases["single {$op}"] = "SELECT a {$op} b FROM r"; +} + +foreach ($binary as $first) { + foreach ($binary as $second) { + $cases["pair {$first} {$second}"] = "SELECT a {$first} b {$second} c FROM r"; + } +} + +foreach ($prefix as $pre) { + foreach ($binary as $op) { + $cases["prefix {$pre} before {$op}"] = "SELECT {$pre} a {$op} b FROM r"; + $cases["prefix {$pre} after {$op}"] = "SELECT a {$op} {$pre} b FROM r"; + } + foreach ($prefix as $inner) { + $cases["prefix {$pre} {$inner}"] = "SELECT {$pre} {$inner} a FROM r"; + } +} + +foreach ($postfix as $post) { + foreach ($binary as $op) { + $cases["postfix {$post} after {$op}"] = "SELECT a {$op} b {$post} FROM r"; + $cases["postfix {$post} before {$op}"] = "SELECT a {$post} {$op} b FROM r"; + } + foreach ($prefix as $pre) { + $cases["postfix {$post} after prefix {$pre}"] = "SELECT {$pre} a {$post} FROM r"; + } + foreach ($postfix as $other) { + $cases["postfix {$post} then {$other}"] = "SELECT a {$post} {$other} FROM r"; + } +} + +$cases += [ + 'where and or eq' => 'SELECT * FROM r WHERE a = 1 AND b > 0 OR c < 2', + 'between and' => 'SELECT * FROM r WHERE a BETWEEN 1 AND 2', + 'between and and' => 'SELECT * FROM r WHERE a BETWEEN 1 AND 2 AND b = 3', + 'not between and' => 'SELECT * FROM r WHERE a NOT BETWEEN 1 + 2 AND 3 * 4', + 'not as infix then eq' => 'SELECT * FROM r WHERE a NOT LIKE b = c', + 'not without like' => 'SELECT * FROM r WHERE a NOT b', + 'not not like' => 'SELECT * FROM r WHERE NOT a NOT LIKE b', + 'is not null not' => 'SELECT * FROM r WHERE NOT a IS NOT NULL', + 'paren groups' => 'SELECT (a + b) * (c - d) FROM r', + 'nested parens' => 'SELECT ((a)) FROM r', + 'json chain' => 'SELECT a->b->>c#>d FROM r', + 'concat chain' => 'SELECT a || b || c FROM r', + 'minus minus' => 'SELECT a - - b FROM r', + 'minus chain literal' => 'SELECT 1 - 2 - 3 FROM r', + 'div chain' => 'SELECT 8 / 4 / 2 FROM r', + 'against chain' => 'SELECT * FROM r WHERE a AGAINST b AGAINST c', + 'like chain' => 'SELECT * FROM r WHERE a LIKE b LIKE c', + 'not like chain' => 'SELECT * FROM r WHERE a NOT LIKE b NOT LIKE c', + 'in after in' => 'SELECT * FROM r WHERE a IN (1) IN (2)', + 'case in expr' => 'SELECT CASE a + 1 WHEN b * 2 THEN c - 3 ELSE d / 4 END + 5 FROM r', + 'fcall in expr' => 'SELECT f(a) + g(b) * 2 FROM r', + 'cast in expr' => 'SELECT CAST(a AS INT) + 1 FROM r', + 'exists and' => 'SELECT * FROM r WHERE EXISTS (SELECT * FROM s) AND a = 1', + 'subquery plus' => 'SELECT (SELECT 1 FROM s) + 1 FROM r', + 'placeholder arithmetic' => 'SELECT :a: + ?0 * {b} FROM r', + 'order by precedence' => 'SELECT * FROM r ORDER BY a + b DESC, c AND d', + 'having precedence' => 'SELECT * FROM r GROUP BY a HAVING a = 1 OR b = 2 AND c = 3', + 'join on precedence' => 'SELECT * FROM r JOIN s ON r.a = s.a AND r.b = s.b', +]; + +return $cases; diff --git a/tests/fixtures/parity/scanner-edge.json b/tests/fixtures/parity/scanner-edge.json new file mode 100644 index 0000000..112ff75 --- /dev/null +++ b/tests/fixtures/parity/scanner-edge.json @@ -0,0 +1,139 @@ +{ + "generator": "ext-phalcon 5.23.0", + "cases": { + "integer": {"source":"SELECT 123 FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":258,"value":"123"}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "integer leading zeros": {"source":"SELECT 007 FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":258,"value":"007"}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "hex lower": {"source":"SELECT 0x1f FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":414,"value":"0x1f"}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "hex upper digits": {"source":"SELECT 0xABCDEF FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":414,"value":"0xABCDEF"}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "hex bare 0x": {"source":"SELECT 0x FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"0x"}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"0x"}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "hex upper X": {"source":"SELECT 0X1F FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":258,"value":"0"},"alias":"X1F"}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "hex-like identifier": {"source":"SELECT abc FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"abc"}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"abc"}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "digits then letters": {"source":"SELECT 1abc FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"1abc"}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"1abc"}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "exponent-like": {"source":"SELECT 1e5 FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"1e5"}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"1e5"}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "hex then g": {"source":"SELECT 0x1g FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":414,"value":"0x1"},"alias":"g"}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "hex x in middle": {"source":"SELECT 1x2 FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"1x2"}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"1x2"}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "double": {"source":"SELECT 1.5 FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":259,"value":"1.5"}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "double no int": {"source":"SELECT .5 FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":259,"value":".5"}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "double no frac": {"source":"SELECT 5. FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":259,"value":"5."}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "double twice": {"source":"SELECT 1.2.3 FROM r","parse":{"outcome":"throw","value":"Syntax error, unexpected token DOUBLE(.3), near to ' FROM r', when parsing: SELECT 1.2.3 FROM r (19)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "double then ident": {"source":"SELECT 1.5abc FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":259,"value":"1.5"},"alias":"abc"}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "dot alone": {"source":"SELECT . FROM r","parse":{"outcome":"throw","value":"Syntax error, unexpected token DOT, near to ' FROM r', when parsing: SELECT . FROM r (15)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected token DOT, near to ' FROM r', when parsing: SELECT . FROM r (15)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "qualified with number": {"source":"SELECT a.1 FROM r","parse":{"outcome":"throw","value":"Syntax error, unexpected token DOUBLE(.1), near to ' FROM r', when parsing: SELECT a.1 FROM r (17)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "limit double": {"source":"SELECT * FROM r LIMIT 1.5","parse":{"outcome":"throw","value":"Syntax error, unexpected EOF","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "limit negative": {"source":"SELECT * FROM r LIMIT -1","parse":{"outcome":"throw","value":"Syntax error, unexpected token -, near to '1', when parsing: SELECT * FROM r LIMIT -1 (24)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected token -, near to '1', when parsing: SELECT * FROM r LIMIT -1 (24)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "identifier underscore": {"source":"SELECT _a_1 FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"_a_1"}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"_a_1"}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "identifier leading backslash": {"source":"SELECT * FROM \\Robots","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"Robots"}}}}}}, + "identifier namespaced": {"source":"SELECT * FROM \\App\\Models\\Robots","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"App\\Models\\Robots"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"App\\Models\\Robots"}}}}}}, + "identifier namespaced no lead": {"source":"SELECT * FROM App\\Models\\Robots","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"App\\Models\\Robots"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"App\\Models\\Robots"}}}}}}, + "identifier double colon": {"source":"SELECT a::int FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"a::int"}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"a::int"}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "identifier trailing colon": {"source":"SELECT a: FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"a:"}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"a:"}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "identifier double backslash": {"source":"SELECT * FROM \\\\Robots","parse":{"outcome":"throw","value":"Scanning error before '\\Robots' when parsing: SELECT * FROM \\\\Robots (22)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Scanning error before '\\Robots' when parsing: SELECT * FROM \\\\Robots (22)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "identifier backslash digit": {"source":"SELECT * FROM \\1Robots","parse":{"outcome":"throw","value":"Scanning error before '1Robots' when parsing: SELECT * FROM \\1Robots (22)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Scanning error before '1Robots' when parsing: SELECT * FROM \\1Robots (22)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "bracket simple": {"source":"SELECT [a] FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"a"}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"a"}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "bracket space": {"source":"SELECT [a b] FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"a b"}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"a b"}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "bracket escaped close": {"source":"SELECT [a\\]b] FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"a\\]b"}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"a\\]b"}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "bracket escaped open": {"source":"SELECT [a\\[b] FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"a\\[b"}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"a\\[b"}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "bracket backslash": {"source":"SELECT [a\\b] FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"a\\b"}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"a\\b"}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "bracket empty": {"source":"SELECT [] FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":""}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":""}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "bracket unterminated": {"source":"SELECT [abc FROM r","parse":{"outcome":"throw","value":"Scanning error before 'abc FROM r' when parsing: SELECT [abc FROM r (18)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Scanning error before 'abc FROM r' when parsing: SELECT [abc FROM r (18)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "bracket newline": {"source":"SELECT [a\nb] FROM r","parse":{"outcome":"throw","value":"Scanning error before 'a\nb] FROM r' when parsing: SELECT [a\nb] FROM r (19)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Scanning error before 'a\nb] FROM r' when parsing: SELECT [a\nb] FROM r (19)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "bracket keyword": {"source":"SELECT [select] FROM [from]","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"select"}}],"tables":{"qualifiedName":{"type":355,"name":"from"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"select"}}],"tables":{"qualifiedName":{"type":355,"name":"from"}}}}}}, + "bracket qualified": {"source":"SELECT [a].[b] FROM [r]","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"domain":"a","name":"b"}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"domain":"a","name":"b"}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "bracket utf8": {"source":"SELECT [naïve] FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"naïve"}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"naïve"}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "keyword as identifier": {"source":"SELECT select FROM r","parse":{"outcome":"throw","value":"Syntax error, unexpected token SELECT, near to ' FROM r', when parsing: SELECT select FROM r (20)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected token SELECT, near to ' FROM r', when parsing: SELECT select FROM r (20)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "keyword prefix identifier": {"source":"SELECT selected, fromage, order_id FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"selected"}},{"type":354,"column":{"type":355,"name":"fromage"}},{"type":354,"column":{"type":355,"name":"order_id"}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":355,"name":"selected"}},{"type":354,"column":{"type":355,"name":"fromage"}},{"type":354,"column":{"type":355,"name":"order_id"}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "string single": {"source":"SELECT 'abc' FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":260,"value":"abc"}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "string double": {"source":"SELECT \"abc\" FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":260,"value":"abc"}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "string empty single": {"source":"SELECT '' FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":260,"value":""}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "string empty double": {"source":"SELECT \"\" FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":260,"value":""}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "string escapes": {"source":"SELECT 'a\\nb\\rc\\td\\\\e\\'f\\\"g' FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":260,"value":"a\nb\rc\td\\e'f\"g"}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "string unknown escapes": {"source":"SELECT 'a\\%b\\dc\\_d\\0e' FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":260,"value":"a\\%b\\dc\\_d\\0e"}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "string double escapes": {"source":"SELECT \"a\\\"b\\'c\\\\d\" FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":260,"value":"a\"b'c\\d"}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "string raw newline": {"source":"SELECT 'a\nb' FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":260,"value":"a\nb"}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "string raw tab": {"source":"SELECT 'a\tb' FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":260,"value":"a\tb"}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "string other quote inside": {"source":"SELECT 'a\"b', \"c'd\" FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":260,"value":"a\"b"}},{"type":354,"column":{"type":260,"value":"c'd"}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "string backslash backslash n": {"source":"SELECT 'a\\\\nb' FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":260,"value":"a\\nb"}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "string trailing backslash": {"source":"SELECT 'abc\\' FROM r","parse":{"outcome":"throw","value":"Scanning error before 'abc\\' FROM r' when parsing: SELECT 'abc\\' FROM r (20)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Scanning error before 'abc\\' FROM r' when parsing: SELECT 'abc\\' FROM r (20)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "string unterminated single": {"source":"SELECT 'abc FROM r","parse":{"outcome":"throw","value":"Scanning error before 'abc FROM r' when parsing: SELECT 'abc FROM r (18)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Scanning error before 'abc FROM r' when parsing: SELECT 'abc FROM r (18)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "string unterminated double": {"source":"SELECT \"abc FROM r","parse":{"outcome":"throw","value":"Scanning error before 'abc FROM r' when parsing: SELECT \"abc FROM r (18)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Scanning error before 'abc FROM r' when parsing: SELECT \"abc FROM r (18)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "string escape at end": {"source":"SELECT 'abc\\","parse":{"outcome":"throw","value":"Scanning error before 'abc\\' when parsing: SELECT 'abc\\ (12)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Scanning error before 'abc\\' when parsing: SELECT 'abc\\ (12)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "string utf8": {"source":"SELECT 'żółć €' FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":260,"value":"żółć €"}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "string with nul": {"source":"SELECT 'a\u0000b' FROM r","parse":{"outcome":"throw","value":"Scanning error before 'a' when parsing: SELECT 'a (19)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Scanning error before 'a' when parsing: SELECT 'a (19)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "string escaped nul": {"source":"SELECT 'a\\\u0000b' FROM r","parse":{"outcome":"throw","value":"Scanning error before 'a\\' when parsing: SELECT 'a\\ (20)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Scanning error before 'a\\' when parsing: SELECT 'a\\ (20)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "string escaped newline": {"source":"SELECT 'a\\\nb' FROM r","parse":{"outcome":"throw","value":"Scanning error before 'a\\\nb' FROM r' when parsing: SELECT 'a\\\nb' FROM r (20)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Scanning error before 'a\\\nb' FROM r' when parsing: SELECT 'a\\\nb' FROM r (20)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "npl": {"source":"SELECT * FROM r WHERE a = ?0","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":61,"left":{"type":355,"name":"a"},"right":{"type":273,"value":"?0"}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":61,"left":{"type":355,"name":"a"},"right":{"type":273,"value":"?0"}}}}}, + "npl multi digit": {"source":"SELECT * FROM r WHERE a = ?123","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":61,"left":{"type":355,"name":"a"},"right":{"type":273,"value":"?123"}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":61,"left":{"type":355,"name":"a"},"right":{"type":273,"value":"?123"}}}}}, + "npl bare": {"source":"SELECT * FROM r WHERE a = ?","parse":{"outcome":"throw","value":"Scanning error before '' when parsing: SELECT * FROM r WHERE a = ? (27)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Scanning error before '' when parsing: SELECT * FROM r WHERE a = ? (27)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "npl letter": {"source":"SELECT * FROM r WHERE a = ?a","parse":{"outcome":"throw","value":"Scanning error before 'a' when parsing: SELECT * FROM r WHERE a = ?a (28)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Scanning error before 'a' when parsing: SELECT * FROM r WHERE a = ?a (28)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "spl": {"source":"SELECT * FROM r WHERE a = :name:","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":61,"left":{"type":355,"name":"a"},"right":{"type":274,"value":"name"}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":61,"left":{"type":355,"name":"a"},"right":{"type":274,"value":"name"}}}}}, + "spl dash": {"source":"SELECT * FROM r WHERE a = :a-b:","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":61,"left":{"type":355,"name":"a"},"right":{"type":274,"value":"a-b"}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":61,"left":{"type":355,"name":"a"},"right":{"type":274,"value":"a-b"}}}}}, + "spl digits": {"source":"SELECT * FROM r WHERE a = :0:","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":61,"left":{"type":355,"name":"a"},"right":{"type":274,"value":"0"}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":61,"left":{"type":355,"name":"a"},"right":{"type":274,"value":"0"}}}}}, + "spl empty": {"source":"SELECT * FROM r WHERE a = ::","parse":{"outcome":"throw","value":"Scanner: Unknown opcode 58","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Scanner: Unknown opcode 58","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "spl unterminated": {"source":"SELECT * FROM r WHERE a = :name","parse":{"outcome":"throw","value":"Scanner: Unknown opcode 58","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Scanner: Unknown opcode 58","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "spl space": {"source":"SELECT * FROM r WHERE a = :a b:","parse":{"outcome":"throw","value":"Scanner: Unknown opcode 58","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Scanner: Unknown opcode 58","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "bpl": {"source":"SELECT * FROM r WHERE a = {name}","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":61,"left":{"type":355,"name":"a"},"right":{"type":277,"value":"name"}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":61,"left":{"type":355,"name":"a"},"right":{"type":277,"value":"name"}}}}}, + "bpl typed": {"source":"SELECT * FROM r WHERE a = {a:int}","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":61,"left":{"type":355,"name":"a"},"right":{"type":277,"value":"a:int"}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":61,"left":{"type":355,"name":"a"},"right":{"type":277,"value":"a:int"}}}}}, + "bpl array": {"source":"SELECT * FROM r WHERE a IN ({a:array})","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":315,"left":{"type":355,"name":"a"},"right":[{"type":277,"value":"a:array"}]}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":315,"left":{"type":355,"name":"a"},"right":[{"type":277,"value":"a:array"}]}}}}, + "bpl dash colon": {"source":"SELECT * FROM r WHERE a = {a-b:c:d}","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":61,"left":{"type":355,"name":"a"},"right":{"type":277,"value":"a-b:c:d"}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":61,"left":{"type":355,"name":"a"},"right":{"type":277,"value":"a-b:c:d"}}}}}, + "bpl empty": {"source":"SELECT * FROM r WHERE a = {}","parse":{"outcome":"throw","value":"Scanning error before '}' when parsing: SELECT * FROM r WHERE a = {} (28)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Scanning error before '}' when parsing: SELECT * FROM r WHERE a = {} (28)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "bpl unterminated": {"source":"SELECT * FROM r WHERE a = {name","parse":{"outcome":"throw","value":"Scanning error before 'name' when parsing: SELECT * FROM r WHERE a = {name (31)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Scanning error before 'name' when parsing: SELECT * FROM r WHERE a = {name (31)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "bpl space": {"source":"SELECT * FROM r WHERE a = {a b}","parse":{"outcome":"throw","value":"Scanning error before 'a b}' when parsing: SELECT * FROM r WHERE a = {a b} (31)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Scanning error before 'a b}' when parsing: SELECT * FROM r WHERE a = {a b} (31)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "lone colon": {"source":"SELECT a : b FROM r","parse":{"outcome":"throw","value":"Scanner: Unknown opcode 58","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Scanner: Unknown opcode 58","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "colon at end": {"source":"SELECT a FROM r WHERE a = :","parse":{"outcome":"throw","value":"Scanner: Unknown opcode 58","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Scanner: Unknown opcode 58","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "op ->>": {"source":"SELECT a->>b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":416,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":416,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "op ->": {"source":"SELECT a->b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":406,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":406,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "op #>>": {"source":"SELECT a#>>b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":418,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":418,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "op #>": {"source":"SELECT a#>b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":417,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":417,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "op # alone": {"source":"SELECT a # b FROM r","parse":{"outcome":"throw","value":"Scanning error before ' b FROM r' when parsing: SELECT a # b FROM r (19)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Scanning error before ' b FROM r' when parsing: SELECT a # b FROM r (19)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "op @@": {"source":"SELECT * FROM r WHERE a@@b","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":401,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":401,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}}}, + "op @>": {"source":"SELECT * FROM r WHERE a@>b","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":402,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":402,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}}}, + "op <@": {"source":"SELECT * FROM r WHERE a<@b","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":403,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":403,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}}}, + "op @ alone": {"source":"SELECT * FROM r WHERE a @ b","parse":{"outcome":"throw","value":"Scanning error before ' b' when parsing: SELECT * FROM r WHERE a @ b (27)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Scanning error before ' b' when parsing: SELECT * FROM r WHERE a @ b (27)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "op &&": {"source":"SELECT * FROM r WHERE a&&b","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":404,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":404,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}}}, + "op ||": {"source":"SELECT a||b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":405,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":405,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "op <>": {"source":"SELECT * FROM r WHERE a<>b","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":270,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":270,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}}}, + "op !=": {"source":"SELECT * FROM r WHERE a!=b","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":270,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":270,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}}}, + "op ! alone": {"source":"SELECT * FROM r WHERE !a","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":33,"right":{"type":355,"name":"a"}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":33,"right":{"type":355,"name":"a"}}}}}, + "op <=": {"source":"SELECT * FROM r WHERE a<=b","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":271,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":271,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}}}, + "op >=": {"source":"SELECT * FROM r WHERE a>=b","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":272,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":272,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}}}, + "op <<": {"source":"SELECT * FROM r WHERE a<": {"source":"SELECT a- >b FROM r","parse":{"outcome":"throw","value":"Syntax error, unexpected token >, near to 'b FROM r', when parsing: SELECT a- >b FROM r (19)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected token >, near to 'b FROM r', when parsing: SELECT a- >b FROM r (19)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "op &&&": {"source":"SELECT * FROM r WHERE a&&&b","parse":{"outcome":"throw","value":"Syntax error, unexpected token &, near to 'b', when parsing: SELECT * FROM r WHERE a&&&b (27)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected token &, near to 'b', when parsing: SELECT * FROM r WHERE a&&&b (27)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "op |||": {"source":"SELECT a|||b FROM r","parse":{"outcome":"throw","value":"Syntax error, unexpected token |, near to 'b FROM r', when parsing: SELECT a|||b FROM r (19)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected token |, near to 'b FROM r', when parsing: SELECT a|||b FROM r (19)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "op ^ ~ & |": {"source":"SELECT a^b, ~a, a&b, a|b FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":94,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}},{"type":354,"column":{"type":126,"right":{"type":355,"name":"a"}}},{"type":354,"column":{"type":38,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}},{"type":354,"column":{"type":124,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":94,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}},{"type":354,"column":{"type":126,"right":{"type":355,"name":"a"}}},{"type":354,"column":{"type":38,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}},{"type":354,"column":{"type":124,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "op no spaces": {"source":"SELECT a+b-c*d/e%f FROM r WHERE(a=1)AND(b<2)","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":37,"left":{"type":47,"left":{"type":42,"left":{"type":45,"left":{"type":43,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"b"}},"right":{"type":355,"name":"c"}},"right":{"type":355,"name":"d"}},"right":{"type":355,"name":"e"}},"right":{"type":355,"name":"f"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":266,"left":{"type":356,"left":{"type":61,"left":{"type":355,"name":"a"},"right":{"type":258,"value":"1"}}},"right":{"type":356,"left":{"type":60,"left":{"type":355,"name":"b"},"right":{"type":258,"value":"2"}}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "op minus number": {"source":"SELECT a-1 FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":45,"left":{"type":355,"name":"a"},"right":{"type":258,"value":"1"}}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "op semicolon": {"source":"SELECT * FROM r;","parse":{"outcome":"throw","value":"Scanning error before '' when parsing: SELECT * FROM r; (16)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Scanning error before '' when parsing: SELECT * FROM r; (16)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "op dollar": {"source":"SELECT $a FROM r","parse":{"outcome":"throw","value":"Scanning error before 'a FROM r' when parsing: SELECT $a FROM r (16)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Scanning error before 'a FROM r' when parsing: SELECT $a FROM r (16)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "op backtick": {"source":"SELECT `a` FROM r","parse":{"outcome":"throw","value":"Scanning error before 'a` FROM r' when parsing: SELECT `a` FROM r (17)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Scanning error before 'a` FROM r' when parsing: SELECT `a` FROM r (17)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "keywords lower": {"source":"select * from r where a = 1 order by a limit 1","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":61,"left":{"type":355,"name":"a"},"right":{"type":258,"value":"1"}},"orderBy":{"column":{"type":355,"name":"a"}},"limit":{"number":{"type":258,"value":"1"}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "keywords mixed": {"source":"SeLeCt * FrOm r WhErE a Is NoT nUlL","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":366,"left":{"type":355,"name":"a"}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":366,"left":{"type":355,"name":"a"}}}}}, + "not between single space": {"source":"SELECT * FROM r WHERE a NOT BETWEEN 1 AND 2","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":332,"left":{"type":355,"name":"a"},"right":{"type":266,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "not between lower": {"source":"SELECT * FROM r WHERE a not between 1 and 2","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":332,"left":{"type":355,"name":"a"},"right":{"type":266,"left":{"type":258,"value":"1"},"right":{"type":258,"value":"2"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "not between two spaces": {"source":"SELECT * FROM r WHERE a NOT BETWEEN 1 AND 2","parse":{"outcome":"throw","value":"Syntax error, unexpected token BETWEEN, near to ' 1 AND 2', when parsing: SELECT * FROM r WHERE a NOT BETWEEN 1 AND 2 (44)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected token BETWEEN, near to ' 1 AND 2', when parsing: SELECT * FROM r WHERE a NOT BETWEEN 1 AND 2 (44)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "not between tab": {"source":"SELECT * FROM r WHERE a NOT\tBETWEEN 1 AND 2","parse":{"outcome":"throw","value":"Syntax error, unexpected token BETWEEN, near to ' 1 AND 2', when parsing: SELECT * FROM r WHERE a NOT\tBETWEEN 1 AND 2 (43)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected token BETWEEN, near to ' 1 AND 2', when parsing: SELECT * FROM r WHERE a NOT\tBETWEEN 1 AND 2 (43)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "not between newline": {"source":"SELECT * FROM r WHERE a NOT\nBETWEEN 1 AND 2","parse":{"outcome":"throw","value":"Syntax error, unexpected token BETWEEN, near to ' 1 AND 2', when parsing: SELECT * FROM r WHERE a NOT\nBETWEEN 1 AND 2 (43)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected token BETWEEN, near to ' 1 AND 2', when parsing: SELECT * FROM r WHERE a NOT\nBETWEEN 1 AND 2 (43)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "not betweenx": {"source":"SELECT * FROM r WHERE a NOT BETWEENX","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":332,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"X"}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"where":{"type":332,"left":{"type":355,"name":"a"},"right":{"type":355,"name":"X"}}}}}, + "true false null case": {"source":"SELECT True, fAlSe, Null FROM r","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":354,"column":{"type":334}},{"type":354,"column":{"type":335}},{"type":354,"column":{"type":322}}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"throw","value":"Literals are disabled in PHQL statements","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "for update lower": {"source":"select * from r for update","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"forUpdate":true}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}},"forUpdate":true}}}, + "whitespace tabs newlines": {"source":"SELECT\t*\nFROM\r\nr","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "whitespace leading trailing": {"source":" \n SELECT * FROM r \t\n","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "whitespace vertical tab": {"source":"SELECT\u000b* FROM r","parse":{"outcome":"throw","value":"Scanning error before '* FROM r' when parsing: SELECT\u000b* FROM r (15)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Scanning error before '* FROM r' when parsing: SELECT\u000b* FROM r (15)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "whitespace form feed": {"source":"SELECT\f* FROM r","parse":{"outcome":"throw","value":"Scanning error before '* FROM r' when parsing: SELECT\f* FROM r (15)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Scanning error before '* FROM r' when parsing: SELECT\f* FROM r (15)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "nul at start": {"source":"\u0000SELECT * FROM r","parse":{"outcome":"value","value":null},"parseNoLiterals":{"outcome":"value","value":null}}, + "nul in middle of statement": {"source":"SELECT * FROM r WHERE\u0000x","parse":{"outcome":"throw","value":"Syntax error, unexpected token WHERE, near to 'x', when parsing: SELECT * FROM r WHERE (23)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected token WHERE, near to 'x', when parsing: SELECT * FROM r WHERE (23)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "nul after complete statement": {"source":"SELECT * FROM r\u0000 garbage","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "nul at end": {"source":"SELECT * FROM r\u0000","parse":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}},"parseNoLiterals":{"outcome":"value","value":{"type":309,"select":{"columns":[{"type":352}],"tables":{"qualifiedName":{"type":355,"name":"r"}}}}}}, + "nul after whitespace": {"source":"SELECT * FROM r WHERE \u0000","parse":{"outcome":"throw","value":"Syntax error, unexpected token UNKNOWN, near to '', when parsing: SELECT * FROM r WHERE (23)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected token UNKNOWN, near to '', when parsing: SELECT * FROM r WHERE (23)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "nul inside identifier": {"source":"SELECT ab\u0000cd FROM r","parse":{"outcome":"throw","value":"Syntax error, unexpected token IDENTIFIER, near to 'cd FROM r', when parsing: SELECT ab (19)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Syntax error, unexpected token IDENTIFIER, near to 'cd FROM r', when parsing: SELECT ab (19)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "control byte": {"source":"SELECT \u0001 FROM r","parse":{"outcome":"throw","value":"Scanning error before ' FROM r' when parsing: SELECT \u0001 FROM r (15)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Scanning error before ' FROM r' when parsing: SELECT \u0001 FROM r (15)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "control byte at start": {"source":"\u0001SELECT * FROM r","parse":{"outcome":"throw","value":"Scanning error before 'SELECT * FROM r' when parsing: \u0001SELECT * FROM r (16)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Scanning error before 'SELECT * FROM r' when parsing: \u0001SELECT * FROM r (16)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "control byte at end": {"source":"SELECT * FROM r\u0001","parse":{"outcome":"throw","value":"Scanning error before '' when parsing: SELECT * FROM r\u0001 (16)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Scanning error before '' when parsing: SELECT * FROM r\u0001 (16)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "del byte": {"source":"SELECT  FROM r","parse":{"outcome":"throw","value":"Scanning error before ' FROM r' when parsing: SELECT  FROM r (15)","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"Scanning error before ' FROM r' when parsing: SELECT  FROM r (15)","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "high byte": {"source":"U0VMRUNUIP8gRlJPTSBy","parse":{"outcome":"throw","value":"U2Nhbm5pbmcgZXJyb3IgYmVmb3JlICcgRlJPTSByJyB3aGVuIHBhcnNpbmc6IFNFTEVDVCD/IEZST00gciAoMTUp","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"U2Nhbm5pbmcgZXJyb3IgYmVmb3JlICcgRlJPTSByJyB3aGVuIHBhcnNpbmc6IFNFTEVDVCD/IEZST00gciAoMTUp","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "utf8 identifier": {"source":"SELECT ü FROM r","parse":{"outcome":"throw","value":"U2Nhbm5pbmcgZXJyb3IgYmVmb3JlICe8IEZST00gcicgd2hlbiBwYXJzaW5nOiBTRUxFQ1Qgw7wgRlJPTSByICgxNik=","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"U2Nhbm5pbmcgZXJyb3IgYmVmb3JlICe8IEZST00gcicgd2hlbiBwYXJzaW5nOiBTRUxFQ1Qgw7wgRlJPTSByICgxNik=","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "utf8 after identifier": {"source":"SELECT aü FROM r","parse":{"outcome":"throw","value":"U2Nhbm5pbmcgZXJyb3IgYmVmb3JlICe8IEZST00gcicgd2hlbiBwYXJzaW5nOiBTRUxFQ1QgYcO8IEZST00gciAoMTcp","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"U2Nhbm5pbmcgZXJyb3IgYmVmb3JlICe8IEZST00gcicgd2hlbiBwYXJzaW5nOiBTRUxFQ1QgYcO8IEZST00gciAoMTcp","exception":"Phalcon\\Mvc\\Model\\Exception"}}, + "utf8 in where": {"source":"SELECT * FROM r WHERE name = ü€","parse":{"outcome":"throw","value":"U2Nhbm5pbmcgZXJyb3IgYmVmb3JlICe84oKsJyB3aGVuIHBhcnNpbmc6IFNFTEVDVCAqIEZST00gciBXSEVSRSBuYW1lID0gw7zigqwgKDM0KQ==","exception":"Phalcon\\Mvc\\Model\\Exception"},"parseNoLiterals":{"outcome":"throw","value":"U2Nhbm5pbmcgZXJyb3IgYmVmb3JlICe84oKsJyB3aGVuIHBhcnNpbmc6IFNFTEVDVCAqIEZST00gciBXSEVSRSBuYW1lID0gw7zigqwgKDM0KQ==","exception":"Phalcon\\Mvc\\Model\\Exception"}} + } +} diff --git a/tests/fixtures/parity/scanner-edge.php b/tests/fixtures/parity/scanner-edge.php new file mode 100644 index 0000000..fc1a00f --- /dev/null +++ b/tests/fixtures/parity/scanner-edge.php @@ -0,0 +1,164 @@ + 'SELECT 123 FROM r', + 'integer leading zeros' => 'SELECT 007 FROM r', + 'hex lower' => 'SELECT 0x1f FROM r', + 'hex upper digits' => 'SELECT 0xABCDEF FROM r', + 'hex bare 0x' => 'SELECT 0x FROM r', + 'hex upper X' => 'SELECT 0X1F FROM r', + 'hex-like identifier' => 'SELECT abc FROM r', + 'digits then letters' => 'SELECT 1abc FROM r', + 'exponent-like' => 'SELECT 1e5 FROM r', + 'hex then g' => 'SELECT 0x1g FROM r', + 'hex x in middle' => 'SELECT 1x2 FROM r', + 'double' => 'SELECT 1.5 FROM r', + 'double no int' => 'SELECT .5 FROM r', + 'double no frac' => 'SELECT 5. FROM r', + 'double twice' => 'SELECT 1.2.3 FROM r', + 'double then ident' => 'SELECT 1.5abc FROM r', + 'dot alone' => 'SELECT . FROM r', + 'qualified with number' => 'SELECT a.1 FROM r', + 'limit double' => 'SELECT * FROM r LIMIT 1.5', + 'limit negative' => 'SELECT * FROM r LIMIT -1', + + // identifiers + 'identifier underscore' => 'SELECT _a_1 FROM r', + 'identifier leading backslash' => 'SELECT * FROM \Robots', + 'identifier namespaced' => 'SELECT * FROM \App\Models\Robots', + 'identifier namespaced no lead' => 'SELECT * FROM App\Models\Robots', + 'identifier double colon' => 'SELECT a::int FROM r', + 'identifier trailing colon' => 'SELECT a: FROM r', + 'identifier double backslash' => 'SELECT * FROM \\\\Robots', + 'identifier backslash digit' => 'SELECT * FROM \1Robots', + 'bracket simple' => 'SELECT [a] FROM r', + 'bracket space' => 'SELECT [a b] FROM r', + 'bracket escaped close' => 'SELECT [a\]b] FROM r', + 'bracket escaped open' => 'SELECT [a\[b] FROM r', + 'bracket backslash' => 'SELECT [a\b] FROM r', + 'bracket empty' => 'SELECT [] FROM r', + 'bracket unterminated' => 'SELECT [abc FROM r', + 'bracket newline' => "SELECT [a\nb] FROM r", + 'bracket keyword' => 'SELECT [select] FROM [from]', + 'bracket qualified' => 'SELECT [a].[b] FROM [r]', + 'bracket utf8' => 'SELECT [naïve] FROM r', + 'keyword as identifier' => 'SELECT select FROM r', + 'keyword prefix identifier' => 'SELECT selected, fromage, order_id FROM r', + + // strings + 'string single' => "SELECT 'abc' FROM r", + 'string double' => 'SELECT "abc" FROM r', + 'string empty single' => "SELECT '' FROM r", + 'string empty double' => 'SELECT "" FROM r', + 'string escapes' => "SELECT 'a\\nb\\rc\\td\\\\e\\'f\\\"g' FROM r", + 'string unknown escapes' => "SELECT 'a\\%b\\dc\\_d\\0e' FROM r", + 'string double escapes' => 'SELECT "a\\"b\\\'c\\\\d" FROM r', + 'string raw newline' => "SELECT 'a\nb' FROM r", + 'string raw tab' => "SELECT 'a\tb' FROM r", + 'string other quote inside' => "SELECT 'a\"b', \"c'd\" FROM r", + 'string backslash backslash n' => "SELECT 'a\\\\nb' FROM r", + 'string trailing backslash' => "SELECT 'abc\\' FROM r", + 'string unterminated single' => "SELECT 'abc FROM r", + 'string unterminated double' => 'SELECT "abc FROM r', + 'string escape at end' => "SELECT 'abc\\", + 'string utf8' => "SELECT 'żółć €' FROM r", + 'string with nul' => "SELECT 'a\0b' FROM r", + 'string escaped nul' => "SELECT 'a\\\0b' FROM r", + 'string escaped newline' => "SELECT 'a\\\nb' FROM r", + + // placeholders + 'npl' => 'SELECT * FROM r WHERE a = ?0', + 'npl multi digit' => 'SELECT * FROM r WHERE a = ?123', + 'npl bare' => 'SELECT * FROM r WHERE a = ?', + 'npl letter' => 'SELECT * FROM r WHERE a = ?a', + 'spl' => 'SELECT * FROM r WHERE a = :name:', + 'spl dash' => 'SELECT * FROM r WHERE a = :a-b:', + 'spl digits' => 'SELECT * FROM r WHERE a = :0:', + 'spl empty' => 'SELECT * FROM r WHERE a = ::', + 'spl unterminated' => 'SELECT * FROM r WHERE a = :name', + 'spl space' => 'SELECT * FROM r WHERE a = :a b:', + 'bpl' => 'SELECT * FROM r WHERE a = {name}', + 'bpl typed' => 'SELECT * FROM r WHERE a = {a:int}', + 'bpl array' => 'SELECT * FROM r WHERE a IN ({a:array})', + 'bpl dash colon' => 'SELECT * FROM r WHERE a = {a-b:c:d}', + 'bpl empty' => 'SELECT * FROM r WHERE a = {}', + 'bpl unterminated' => 'SELECT * FROM r WHERE a = {name', + 'bpl space' => 'SELECT * FROM r WHERE a = {a b}', + 'lone colon' => 'SELECT a : b FROM r', + 'colon at end' => 'SELECT a FROM r WHERE a = :', + + // operators and longest match + 'op ->>' => 'SELECT a->>b FROM r', + 'op ->' => 'SELECT a->b FROM r', + 'op #>>' => 'SELECT a#>>b FROM r', + 'op #>' => 'SELECT a#>b FROM r', + 'op # alone' => 'SELECT a # b FROM r', + 'op @@' => 'SELECT * FROM r WHERE a@@b', + 'op @>' => 'SELECT * FROM r WHERE a@>b', + 'op <@' => 'SELECT * FROM r WHERE a<@b', + 'op @ alone' => 'SELECT * FROM r WHERE a @ b', + 'op &&' => 'SELECT * FROM r WHERE a&&b', + 'op ||' => 'SELECT a||b FROM r', + 'op <>' => 'SELECT * FROM r WHERE a<>b', + 'op !=' => 'SELECT * FROM r WHERE a!=b', + 'op ! alone' => 'SELECT * FROM r WHERE !a', + 'op <=' => 'SELECT * FROM r WHERE a<=b', + 'op >=' => 'SELECT * FROM r WHERE a>=b', + 'op <<' => 'SELECT * FROM r WHERE a< 'SELECT * FROM r WHERE a==b', + 'op - >' => 'SELECT a- >b FROM r', + 'op &&&' => 'SELECT * FROM r WHERE a&&&b', + 'op |||' => 'SELECT a|||b FROM r', + 'op ^ ~ & |' => 'SELECT a^b, ~a, a&b, a|b FROM r', + 'op no spaces' => 'SELECT a+b-c*d/e%f FROM r WHERE(a=1)AND(b<2)', + 'op minus number' => 'SELECT a-1 FROM r', + 'op semicolon' => 'SELECT * FROM r;', + 'op dollar' => 'SELECT $a FROM r', + 'op backtick' => 'SELECT `a` FROM r', + + // keywords: case and spacing + 'keywords lower' => 'select * from r where a = 1 order by a limit 1', + 'keywords mixed' => 'SeLeCt * FrOm r WhErE a Is NoT nUlL', + 'not between single space' => 'SELECT * FROM r WHERE a NOT BETWEEN 1 AND 2', + 'not between lower' => 'SELECT * FROM r WHERE a not between 1 and 2', + 'not between two spaces' => 'SELECT * FROM r WHERE a NOT BETWEEN 1 AND 2', + 'not between tab' => "SELECT * FROM r WHERE a NOT\tBETWEEN 1 AND 2", + 'not between newline' => "SELECT * FROM r WHERE a NOT\nBETWEEN 1 AND 2", + 'not betweenx' => 'SELECT * FROM r WHERE a NOT BETWEENX', + 'true false null case' => 'SELECT True, fAlSe, Null FROM r', + 'for update lower' => 'select * from r for update', + + // whitespace + 'whitespace tabs newlines' => "SELECT\t*\nFROM\r\nr", + 'whitespace leading trailing' => " \n SELECT * FROM r \t\n", + 'whitespace vertical tab' => "SELECT\v* FROM r", + 'whitespace form feed' => "SELECT\f* FROM r", + + // NUL and control bytes + 'nul at start' => "\0SELECT * FROM r", + 'nul in middle of statement' => "SELECT * FROM r WHERE\0x", + 'nul after complete statement' => "SELECT * FROM r\0 garbage", + 'nul at end' => "SELECT * FROM r\0", + 'nul after whitespace' => "SELECT * FROM r WHERE \0", + 'nul inside identifier' => "SELECT ab\0cd FROM r", + 'control byte' => "SELECT \x01 FROM r", + 'control byte at start' => "\x01SELECT * FROM r", + 'control byte at end' => "SELECT * FROM r\x01", + 'del byte' => "SELECT \x7f FROM r", + 'high byte' => "SELECT \xff FROM r", + + // UTF-8 + 'utf8 identifier' => 'SELECT ü FROM r', + 'utf8 after identifier' => 'SELECT aü FROM r', + 'utf8 in where' => 'SELECT * FROM r WHERE name = ü€', +]; diff --git a/tests/generate-golden.php b/tests/generate-golden.php new file mode 100644 index 0000000..b7aca97 --- /dev/null +++ b/tests/generate-golden.php @@ -0,0 +1,93 @@ + + * + * For the full copyright and license information, please view the LICENSE.txt + * file that was distributed with this source code. + */ + +declare(strict_types=1); + +/** + * Regenerates the golden files for every corpus group in + * `tests/fixtures/parity` from the cphalcon C implementation. + * + * php -d extension=phalcon tests/generate-golden.php + * + * Unlike a snapshot, the goldens are a cross-implementation reference: they + * record what ext-phalcon does, never what this package does. The script + * therefore refuses to run without the extension instead of falling back to + * the pure-PHP parser. Each golden records the extension version that + * produced it. + * + * Every case is parsed by `Phalcon\Mvc\Model\Query\Lang::parsePHQL()` twice: + * `parse` with `phalcon.orm.enable_literals` on, `parseNoLiterals` with it + * off. `phalcon.orm.cache_level` is -1, so cphalcon neither returns cached + * ASTs nor appends its `id` key: the goldens describe the parser alone. + * Strings that are not valid UTF-8 are stored through Parity::jsonSafe(). + */ + +require __DIR__ . '/../vendor/autoload.php'; + +use Phalcon\Mvc\Model\Query\Lang; +use Phalcon\Phql\Tests\Support\Parity; + +if (!extension_loaded('phalcon') || !class_exists(Lang::class)) { + fwrite(STDERR, "ext-phalcon is not loaded; refusing to generate goldens from anything else.\n"); + fwrite(STDERR, "Run: php -d extension=phalcon tests/generate-golden.php\n"); + + exit(1); +} + +ini_set('phalcon.orm.cache_level', '-1'); + +$generator = 'ext-phalcon ' . phpversion('phalcon'); +$written = 0; +$cases = 0; + +echo "Generating from {$generator} on PHP " . PHP_VERSION . "\n"; + +$encode = static fn (mixed $value): string => json_encode( + Parity::jsonSafe($value), + JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE | JSON_THROW_ON_ERROR, + Parity::JSON_DEPTH +); + +$parse = static function (string $phql, bool $literals): array { + ini_set('phalcon.orm.enable_literals', $literals ? '1' : '0'); + + return Parity::run(static fn (string $p): mixed => Lang::parsePHQL($p), $phql); +}; + +foreach (Parity::corpus() as $group => $sources) { + $lines = []; + + foreach ($sources as $label => $source) { + $case = ['source' => $source]; + foreach (Parity::MODES as $mode => $literals) { + $case[$mode] = $parse($source, $literals); + } + + $lines[] = ' ' . $encode((string) $label) . ': ' . $encode($case); + $cases++; + } + + ini_set('phalcon.orm.enable_literals', '1'); + + $json = "{\n" + . ' "generator": ' . $encode($generator) . ",\n" + . " \"cases\": {\n" + . implode(",\n", $lines) . "\n" + . " }\n" + . "}\n"; + + file_put_contents(Parity::fixturesPath() . '/' . $group . '.json', $json); + $written++; + + echo sprintf(" %-20s %4d case(s)\n", $group, count($sources)); +} + +echo "Wrote {$written} golden file(s), {$cases} case(s).\n"; diff --git a/tests/harvest-corpus.php b/tests/harvest-corpus.php new file mode 100644 index 0000000..48fcee4 --- /dev/null +++ b/tests/harvest-corpus.php @@ -0,0 +1,212 @@ + + * + * For the full copyright and license information, please view the LICENSE.txt + * file that was distributed with this source code. + */ + +declare(strict_types=1); + +/** + * Harvests PHQL statements from existing test suites into a parity corpus. + * + * Every string literal (single, double or nowdoc/heredoc without + * interpolation, joined across `.` concatenations) that starts with a PHQL + * statement keyword is collected. Duplicates are dropped; the first + * occurrence wins, so list the most authoritative source (cphalcon) first. + * + * php tests/harvest-corpus.php \ + * cphalcon=/path/to/cphalcon/tests \ + * phalcon=/path/to/phalcon/tests \ + * phql=tests/unit + * + * The result is written to `tests/fixtures/parity/harvested.php` as a plain + * `label => phql` array. The corpus only lists inputs; the expected output + * comes from `tests/generate-golden.php`, which runs them through ext-phalcon. + */ + +$output = __DIR__ . '/fixtures/parity/harvested.php'; + +if ($argc < 2) { + fwrite(STDERR, "usage: php tests/harvest-corpus.php label=path [label=path ...]\n"); + + exit(2); +} + +/** + * @return list + */ +function harvestFiles(string $path): array +{ + if (is_file($path)) { + return [$path]; + } + + $files = []; + $iterator = new RecursiveIteratorIterator( + new RecursiveDirectoryIterator($path, FilesystemIterator::SKIP_DOTS) + ); + + foreach ($iterator as $file) { + /** @var SplFileInfo $file */ + $extension = $file->getExtension(); + if ($extension === 'php') { + $files[] = $file->getPathname(); + } + } + + sort($files); + + return $files; +} + +/** + * Evaluates one constant PHP string literal token. Only tokens the tokenizer + * classified as constant strings (or complete heredoc/nowdoc runs without + * interpolation) are ever passed here, so evaluation cannot execute code. + */ +function literalValue(string $literal): string +{ + /** @var string */ + return eval('return ' . $literal . ';'); +} + +/** + * Returns every constant string expression in a PHP file, joining literals + * that are concatenated with `.`. + * + * @return list + */ +function stringLiterals(string $code): array +{ + $tokens = token_get_all($code); + $count = count($tokens); + $strings = []; + $current = null; + $joinNext = false; + + for ($i = 0; $i < $count; $i++) { + $token = $tokens[$i]; + + if (is_array($token) && in_array($token[0], [T_WHITESPACE, T_COMMENT, T_DOC_COMMENT], true)) { + continue; + } + + $literal = null; + + if (is_array($token) && $token[0] === T_CONSTANT_ENCAPSED_STRING) { + $literal = literalValue($token[1]); + } elseif (is_array($token) && $token[0] === T_START_HEREDOC) { + $source = $token[1]; + $interpolated = false; + for ($j = $i + 1; $j < $count; $j++) { + $inner = $tokens[$j]; + $source .= is_array($inner) ? $inner[1] : $inner; + if (is_array($inner) && $inner[0] === T_END_HEREDOC) { + break; + } + if (!is_array($inner) || $inner[0] !== T_ENCAPSED_AND_WHITESPACE) { + $interpolated = true; + } + } + $i = $j; + if (!$interpolated) { + $literal = literalValue($source); + } + } + + if ($literal !== null) { + if ($joinNext && $current !== null) { + $current .= $literal; + } else { + if ($current !== null) { + $strings[] = $current; + } + $current = $literal; + } + $joinNext = false; + + continue; + } + + if ($token === '.' && $current !== null) { + $joinNext = true; + + continue; + } + + if ($current !== null) { + $strings[] = $current; + $current = null; + } + $joinNext = false; + } + + if ($current !== null) { + $strings[] = $current; + } + + return $strings; +} + +function isPhqlSnippet(string $candidate): bool +{ + return preg_match('/^\s*(?:SELECT|INSERT|UPDATE|DELETE)\b/i', $candidate) === 1; +} + +$corpus = []; +$seen = []; + +foreach (array_slice($argv, 1) as $argument) { + [$label, $root] = array_pad(explode('=', $argument, 2), 2, ''); + + if ($label === '' || $root === '' || !file_exists($root)) { + fwrite(STDERR, "skipping invalid source '{$argument}'\n"); + + continue; + } + + $root = rtrim($root, '/'); + $added = 0; + + foreach (harvestFiles($root) as $file) { + $relative = ltrim(substr($file, strlen($root)), '/'); + $contents = file_get_contents($file); + + if ($contents === false) { + continue; + } + + $index = 0; + + foreach (stringLiterals($contents) as $candidate) { + if (!isPhqlSnippet($candidate) || isset($seen[$candidate])) { + continue; + } + + $seen[$candidate] = true; + $index++; + $key = "{$label}:" . preg_replace('/\.php$/', '', $relative) . "#{$index}"; + $corpus[$key] = $candidate; + $added++; + } + } + + echo " {$label}: {$added} statement(s)\n"; +} + +$export = " + * + * For the full copyright and license information, please view the LICENSE.txt + * file that was distributed with this source code. + */ + +declare(strict_types=1); + +namespace Phalcon\Phql\Tests\Support; + +use Throwable; + +use function base64_encode; +use function basename; +use function file_get_contents; +use function get_class; +use function glob; +use function in_array; +use function is_array; +use function is_file; +use function is_string; +use function json_decode; +use function ksort; +use function preg_match; +use function sort; + +use const JSON_THROW_ON_ERROR; + +/** + * Shared plumbing for the cphalcon parity checks. + * + * The corpus lives in `tests/fixtures/parity/.php` (plain + * `label => phql` arrays). `tests/generate-golden.php` runs every case through + * ext-phalcon (`Phalcon\Mvc\Model\Query\Lang::parsePHQL()`) twice - with + * literals enabled and disabled - and records both results in `.json`. + * FixturesTest replays the goldens against this package and + * `tests/differential.php` compares both implementations live. + * + * Every outcome is normalised to one comparable shape, so "returned an AST" + * and "threw with this message" compare with a single `===`. + * + * @phpstan-type Outcome array{outcome: 'value'|'throw', value: mixed, exception?: class-string} + */ +final class Parity +{ + public const BYTES_PREFIX = ''; + + public const JSON_DEPTH = 4096; + + /** + * Golden keys, one per literals mode: `parse` has `orm.enable_literals` + * on (the default), `parseNoLiterals` has it off. + */ + public const MODES = ['parse' => true, 'parseNoLiterals' => false]; + + /** + * Corpus files that are not case groups. + */ + private const NON_GROUPS = ['allow-list']; + + /** + * Expected phalcon/phql outcome for cases where phalcon/phql deliberately + * differs from cphalcon, keyed by "group/label/mode". + * + * @return array + */ + public static function allowList(): array + { + $path = self::fixturesPath() . '/allow-list.php'; + if (!is_file($path)) { + return []; + } + + /** @var array */ + return require $path; + } + + /** + * Strips what is allowed to differ between implementations (the exception + * class: cphalcon throws Phalcon\Mvc\Model\Exception, this package throws + * Phalcon\Phql\Exception) so the rest compares with `===`. + * + * @param array $outcome + * + * @return array{outcome: mixed, value: mixed} + */ + public static function comparable(array $outcome): array + { + return ['outcome' => $outcome['outcome'] ?? null, 'value' => $outcome['value'] ?? null]; + } + + /** + * @return array> group => label => phql + */ + public static function corpus(): array + { + $groups = []; + $files = glob(self::fixturesPath() . '/*.php') ?: []; + sort($files); + + foreach ($files as $file) { + $group = basename($file, '.php'); + if (in_array($group, self::NON_GROUPS, true)) { + continue; + } + + /** @var array $cases */ + $cases = require $file; + $groups[$group] = $cases; + } + + ksort($groups); + + return $groups; + } + + public static function fixturesPath(): string + { + return __DIR__ . '/../fixtures/parity'; + } + + /** + * Makes a value JSON-encodable without losing bytes: every string that + * is not valid UTF-8 (control bytes, a multibyte character cut by a + * 16-byte error excerpt, ...) becomes `` + its base64. + * Goldens store values in this form and the tests apply it to the PHP + * side too, so both compare byte for byte with `===`. + */ + public static function jsonSafe(mixed $value): mixed + { + if (is_string($value)) { + return preg_match('//u', $value) === 1 ? $value : self::BYTES_PREFIX . base64_encode($value); + } + + if (is_array($value)) { + foreach ($value as $key => $item) { + $value[$key] = self::jsonSafe($item); + } + } + + return $value; + } + + /** + * @return array decoded golden file for one group + */ + public static function golden(string $group): array + { + $path = self::fixturesPath() . '/' . $group . '.json'; + $json = is_file($path) ? file_get_contents($path) : false; + if ($json === false) { + return []; + } + + $decoded = json_decode($json, true, self::JSON_DEPTH, JSON_THROW_ON_ERROR); + + return is_array($decoded) ? $decoded : []; + } + + /** + * Runs a parser and normalises either outcome into one shape. + * + * @param callable(string): mixed $run + * + * @phpstan-return Outcome + */ + public static function run(callable $run, string $phql): array + { + try { + return ['outcome' => 'value', 'value' => $run($phql)]; + } catch (Throwable $ex) { + return [ + 'outcome' => 'throw', + 'value' => $ex->getMessage(), + 'exception' => get_class($ex), + ]; + } + } +} diff --git a/tests/unit/Parser/AstTest.php b/tests/unit/Parser/AstTest.php new file mode 100644 index 0000000..4bcd429 --- /dev/null +++ b/tests/unit/Parser/AstTest.php @@ -0,0 +1,74 @@ + + * + * For the full copyright and license information, please view the LICENSE.txt + * file that was distributed with this source code. + */ + +declare(strict_types=1); + +namespace Phalcon\Phql\Tests\Unit\Parser; + +use Phalcon\Phql\Parser\Ast; +use Phalcon\Phql\Scanner\Opcode; +use Phalcon\Phql\Tests\AbstractUnitTestCase; + +use function array_keys; + +/** + * Node shapes of cphalcon's parser.php.inc.h: key order, optional keys left + * out rather than null, and the list helper that keeps a single item bare. + */ +final class AstTest extends AbstractUnitTestCase +{ + public function testExpressionOmitsMissingOperands(): void + { + $this->assertSame( + ['type' => Opcode::NOT->value, 'right' => ['x']], + Ast::expr(Opcode::NOT->value, null, ['x']) + ); + } + + public function testListOfManyItemsStaysAList(): void + { + $a = Ast::qualifiedName(null, 'a'); + $b = Ast::qualifiedName(null, 'b'); + + $this->assertSame([$a, $b], Ast::bareIfSingle([$a, $b])); + } + + /** + * Rules such as `associated_name_list ::= associated_name` pass a single + * item up unwrapped; phql_ret_zval_list() wraps it once a second follows. + */ + public function testListOfOneItemIsTheBareItem(): void + { + $a = Ast::qualifiedName(null, 'a'); + + $this->assertSame($a, Ast::bareIfSingle([$a])); + } + + public function testLiteralWithoutValue(): void + { + $this->assertSame(['type' => Opcode::NULL->value], Ast::literal(Opcode::NULL->value, null)); + } + + public function testQualifiedNameWithDomain(): void + { + $this->assertSame( + ['type' => Opcode::QUALIFIED->value, 'domain' => 'r', 'name' => 'id'], + Ast::qualifiedName('r', 'id') + ); + } + + public function testSelectStatementPutsOrderByBeforeGroupBy(): void + { + $node = Ast::selectStatement(['columns' => []], null, ['o'], ['g'], null, null, null); + + $this->assertSame(['type', 'select', 'orderBy', 'groupBy'], array_keys($node)); + } +} diff --git a/tests/unit/Parser/CursorTest.php b/tests/unit/Parser/CursorTest.php new file mode 100644 index 0000000..6c90f51 --- /dev/null +++ b/tests/unit/Parser/CursorTest.php @@ -0,0 +1,131 @@ + + * + * For the full copyright and license information, please view the LICENSE.txt + * file that was distributed with this source code. + */ + +declare(strict_types=1); + +namespace Phalcon\Phql\Tests\Unit\Parser; + +use Phalcon\Phql\Exception; +use Phalcon\Phql\Parser\Cursor; +use Phalcon\Phql\Parser\TokenStream; +use Phalcon\Phql\Scanner\Opcode; +use Phalcon\Phql\Tests\AbstractUnitTestCase; + +use function str_repeat; + +/** + * The cursor counts parser stack entries the way cphalcon's Lemon parser + * does: 100 entries including the bottom one, a shifted token takes one, a + * reduction replaces its right-hand side by one entry, and an empty rule + * pushes one. + */ +final class CursorTest extends AbstractUnitTestCase +{ + private const NESTED_TOO_DEEPLY = 'Parsing failed, the PHQL statement is nested too deeply'; + + public function testEmptyReductionPushesAnEntry(): void + { + $cursor = $this->cursorOver(98); + $this->shiftTimes($cursor, 98); + $cursor->reduce(0); + + $this->expectExceptionMessage(self::NESTED_TOO_DEEPLY); + + $cursor->reduce(0); + } + + public function testExpectFailsWithSyntaxErrorOnAnotherToken(): void + { + $cursor = new Cursor(new TokenStream('a b', true)); + + $this->expectException(Exception::class); + $this->expectExceptionMessage( + "Syntax error, unexpected token IDENTIFIER(a), near to ' b', when parsing: a b (3)" + ); + + $cursor->expect(Opcode::COMMA->value); + } + + public function testExpectShiftsTheExpectedToken(): void + { + $cursor = new Cursor(new TokenStream('a , b', true)); + $cursor->shift(); + + $this->assertSame( + [Opcode::COMMA->value, 'b'], + [$cursor->expect(Opcode::COMMA->value)->opcode, $cursor->current()->value] + ); + } + + public function testIsComparesTheCurrentOpcode(): void + { + $cursor = new Cursor(new TokenStream('a', true)); + + $this->assertSame( + [true, false], + [$cursor->is(Opcode::IDENTIFIER->value), $cursor->is(Opcode::COMMA->value)] + ); + } + + public function testNinetyNineEntriesFitAndTheHundredthOverflows(): void + { + $cursor = $this->cursorOver(100); + $this->shiftTimes($cursor, 99); + + $this->expectExceptionMessage(self::NESTED_TOO_DEEPLY); + + $cursor->shift(); + } + + public function testReductionFreesAllButOneEntry(): void + { + $cursor = $this->cursorOver(102); + $this->shiftTimes($cursor, 99); + $cursor->reduce(3); + $this->shiftTimes($cursor, 2); + + $this->expectExceptionMessage(self::NESTED_TOO_DEEPLY); + + $cursor->shift(); + } + + public function testShiftReturnsTheCurrentToken(): void + { + $cursor = new Cursor(new TokenStream('a b', true)); + + $this->assertSame(['a', 'b'], [$cursor->shift()->value, $cursor->current()->value]); + } + + /** + * Lemon only acts on a token once the next one has been scanned, so a + * scanning error right after a token surfaces while shifting it. + */ + public function testShiftScansTheNextToken(): void + { + $cursor = new Cursor(new TokenStream("a \x01", true)); + + $this->expectExceptionMessage("Scanning error before '' when parsing: a \x01 (3)"); + + $cursor->shift(); + } + + private function cursorOver(int $tokens): Cursor + { + return new Cursor(new TokenStream(str_repeat('a ', $tokens), true)); + } + + private function shiftTimes(Cursor $cursor, int $times): void + { + for ($i = 0; $i < $times; $i++) { + $cursor->shift(); + } + } +} diff --git a/tests/unit/Parser/FixturesTest.php b/tests/unit/Parser/FixturesTest.php new file mode 100644 index 0000000..3e53d3a --- /dev/null +++ b/tests/unit/Parser/FixturesTest.php @@ -0,0 +1,116 @@ + + * + * For the full copyright and license information, please view the LICENSE.txt + * file that was distributed with this source code. + */ + +declare(strict_types=1); + +namespace Phalcon\Phql\Tests\Unit\Parser; + +use Phalcon\Phql\Parser; +use Phalcon\Phql\Tests\AbstractUnitTestCase; +use Phalcon\Phql\Tests\Support\Parity; +use PHPUnit\Framework\Attributes\DataProvider; + +use function array_keys; +use function is_array; + +/** + * Replays every case of the parity corpus against the golden outcome recorded + * from ext-phalcon by `tests/generate-golden.php`, once with literals enabled + * (`parse`) and once with them disabled (`parseNoLiterals`). + * + * `assertSame()` rather than `assertEquals()`: key order and int/string types + * are part of the AST format, and only an identity comparison notices drift. + * Exceptions compare by message only - cphalcon throws + * Phalcon\Mvc\Model\Exception, this package Phalcon\Phql\Exception. + * + * Cases in `allow-list.php` are deliberate phalcon/phql divergences and are + * checked against their recorded expectation instead of the C golden. + */ +final class FixturesTest extends AbstractUnitTestCase +{ + /** + * @return array + */ + public static function goldenProvider(): array + { + $allowList = Parity::allowList(); + $cases = []; + + foreach (Parity::corpus() as $group => $sources) { + $golden = Parity::golden($group); + /** @var array> $goldenCases */ + $goldenCases = is_array($golden['cases'] ?? null) ? $golden['cases'] : []; + + foreach ($sources as $label => $source) { + foreach (Parity::MODES as $mode => $literals) { + $key = $group . '/' . $label . '/' . $mode; + if (isset($allowList[$key])) { + $expected = Parity::jsonSafe(Parity::comparable($allowList[$key])); + } else { + /** @var array $outcome */ + $outcome = $goldenCases[$label][$mode] ?? ['outcome' => 'missing golden', 'value' => null]; + $expected = Parity::comparable($outcome); + } + + $cases[$key] = [$source, $literals, $expected]; + } + } + } + + return $cases; + } + + /** + * @return array + */ + public static function groupProvider(): array + { + $groups = []; + foreach (array_keys(Parity::corpus()) as $group) { + $groups[$group] = [$group]; + } + + return $groups; + } + + /** + * Each golden records the statement it was generated from. A corpus + * statement edited, added or removed without regenerating the goldens + * would otherwise be compared against another statement's outcome. + */ + #[DataProvider('groupProvider')] + public function testGoldensMatchTheCorpus(string $group): void + { + /** @var array> $cases */ + $cases = Parity::golden($group)['cases'] ?? []; + $golden = []; + foreach ($cases as $label => $case) { + $golden[$label] = $case['source'] ?? null; + } + + $this->assertSame( + Parity::jsonSafe(Parity::corpus()[$group]), + $golden, + "Regenerate the goldens: php -d extension=phalcon tests/generate-golden.php" + ); + } + + #[DataProvider('goldenProvider')] + public function testParseMatchesCphalcon(string $source, bool $literals, mixed $expected): void + { + $actual = Parity::jsonSafe(Parity::comparable(Parity::run( + static fn (string $phql): ?array => (new Parser())->setEnableLiterals($literals)->parse($phql), + $source + ))); + + $this->assertSame($expected, $actual); + } +} diff --git a/tests/unit/Parser/LongListTest.php b/tests/unit/Parser/LongListTest.php new file mode 100644 index 0000000..a8f7780 --- /dev/null +++ b/tests/unit/Parser/LongListTest.php @@ -0,0 +1,111 @@ + + * + * For the full copyright and license information, please view the LICENSE.txt + * file that was distributed with this source code. + */ + +declare(strict_types=1); + +namespace Phalcon\Phql\Tests\Unit\Parser; + +use Phalcon\Phql\Parser; +use Phalcon\Phql\Tests\AbstractUnitTestCase; + +use function array_fill; +use function count; +use function hrtime; +use function implode; +use function min; +use function str_repeat; + +/** + * Long inputs must parse in linear time. The grammar's lists and + * left-associative operator chains are left-recursive, so cphalcon keeps them + * in one parser stack entry however long they grow, and so must this parser. + * + * No test here has an absolute time limit: CI runs this suite under coverage, + * which makes the parser an order of magnitude slower, on runners slower than + * a laptop. Each speed test instead parses an input and one eight times as + * long on the same machine: linear parsing takes about 8 times as long, + * quadratic parsing up to 64 times. The threshold of 20 sits between them. + */ +final class LongListTest extends AbstractUnitTestCase +{ + private const MAX_RATIO = 20.0; + + public function testAndChainGrowsLinearly(): void + { + $build = static fn (int $n): string => 'SELECT * FROM r WHERE ' . implode(' AND ', array_fill(0, $n, 'a = 1')); + + $this->assertLessThan(self::MAX_RATIO, $this->growth($build, 1000)); + } + + public function testColumnListGrowsLinearly(): void + { + $build = static fn (int $n): string => 'SELECT ' . implode(', ', array_fill(0, $n, 'c')) . ' FROM r'; + + $this->assertLessThan(self::MAX_RATIO, $this->growth($build, 2500)); + } + + /** + * cphalcon tests/unit/Mvc/Model/Query/Lang/ParsePHQLTest.php + * (testMvcModelQueryLangParsePHQLLargeInList) without its 3 s limit. + */ + public function testFortyThousandItemInListParses(): void + { + $ast = (new Parser())->parse($this->inList(40000)); + + $this->assertSame(40000, count($ast['where']['right'] ?? [])); + } + + public function testInListGrowsLinearly(): void + { + $this->assertLessThan(self::MAX_RATIO, $this->growth($this->inList(...), 2500)); + } + + public function testLongStringLiteralGrowsLinearly(): void + { + $build = static fn (int $n): string => "SELECT * FROM r WHERE a = '" . str_repeat('ab\\\'c\\n', $n) . "'"; + + // Large enough (450 KB) that the small run is not dwarfed by + // scheduler noise on a throttled CI runner. + $this->assertLessThan(self::MAX_RATIO, $this->growth($build, 65536)); + } + + /** + * Ratio of the time to parse build(8n) to the time to parse build(n), + * each the fastest of three runs, after a warm-up. + * + * @param callable(int): string $build + */ + private function growth(callable $build, int $n): float + { + $this->secondsToParse($build(10)); + + return $this->secondsToParse($build(8 * $n)) / $this->secondsToParse($build($n)); + } + + private function inList(int $count): string + { + return 'SELECT * FROM Robots WHERE id IN (' . implode(', ', array_fill(0, $count, '1')) . ')'; + } + + private function secondsToParse(string $phql): float + { + $parser = new Parser(); + $times = []; + + for ($run = 0; $run < 3; $run++) { + $start = hrtime(true); + $parser->parse($phql); + $times[] = (hrtime(true) - $start) / 1e9; + } + + return min($times); + } +} diff --git a/tests/unit/Parser/PrecedenceTest.php b/tests/unit/Parser/PrecedenceTest.php new file mode 100644 index 0000000..bc3562c --- /dev/null +++ b/tests/unit/Parser/PrecedenceTest.php @@ -0,0 +1,124 @@ + + * + * For the full copyright and license information, please view the LICENSE.txt + * file that was distributed with this source code. + */ + +declare(strict_types=1); + +namespace Phalcon\Phql\Tests\Unit\Parser; + +use Phalcon\Phql\Parser; +use Phalcon\Phql\Scanner\Opcode; +use Phalcon\Phql\Tests\AbstractUnitTestCase; +use PHPUnit\Framework\Attributes\DataProvider; + +use function array_is_list; +use function array_map; +use function implode; + +/** + * Operator precedence as cphalcon's Lemon grammar resolves it, which is not + * always what SQL readers expect: AND/OR bind tighter than `=`, `* / %` bind + * looser than `+ -`, NOT LIKE / NOT ILIKE / NOT IN take NOT's (high, + * right-associative) level, and unary minus takes binary minus's level. + * Each expected tree was rendered from ext-phalcon 5.23.0's AST; the + * precedence goldens pin the full ASTs. + */ +final class PrecedenceTest extends AbstractUnitTestCase +{ + /** + * @return array + */ + public static function expressionProvider(): array + { + $cases = [ + 'a = 1 AND b > 0' => '(GREATER (EQUALS a (AND 1 b)) 0)', + 'a + b * c' => '(MUL (ADD a b) c)', + 'a * b + c' => '(MUL a (ADD b c))', + 'a + b IN (1)' => '(ADD a (IN b (1)))', + 'a + b NOT LIKE c' => '(ADD a (NLIKE b c))', + '- a + b' => '(ADD (MINUS a) b)', + '- a * b' => '(MUL (MINUS a) b)', + 'NOT a = b' => '(EQUALS (NOT a) b)', + 'a BETWEEN 1 AND 2' => '(BETWEEN a (AND 1 2))', + 'a IS NOT NULL = b' => '(EQUALS (ISNOTNULL a) b)', + 'a = b IS NULL' => '(EQUALS a (ISNULL b))', + 'a -> b IS NULL' => '(ISNULL (OP_JSON_GET a b))', + 'a OR b AND c' => '(AND (OR a b) c)', + 'a AND b OR c' => '(OR (AND a b) c)', + 'a & b | c' => '(BITWISE_OR (BITWISE_AND a b) c)', + 'a || b + c' => '(ADD (OP_CONCAT a b) c)', + 'a -> b ->> c' => '(OP_JSON_GET_TEXT (OP_JSON_GET a b) c)', + 'a NOT LIKE b NOT LIKE c' => '(NLIKE a (NLIKE b c))', + 'a AGAINST b AGAINST c' => '(AGAINST a (AGAINST b c))', + 'a LIKE b LIKE c' => '(LIKE (LIKE a b) c)', + 'NOT a NOT LIKE b' => '(NOT (NLIKE a b))', + '~ a + b' => '(ADD (BITWISE_NOT a) b)', + 'a * - b + c' => '(MUL a (ADD (MINUS b) c))', + 'a IN (1) IN (2)' => '(IN (IN a (1)) (2))', + 'a = b NOT IN (1)' => '(EQUALS a (NOTIN b (1)))', + 'a - - b' => '(SUB a (MINUS b))', + '1 - 2 - 3' => '(SUB (SUB 1 2) 3)', + '8 / 4 / 2' => '(DIV (DIV 8 4) 2)', + 'a BETWEEN 1 + 2 AND 3 * 4' => '(BETWEEN a (AND (ADD 1 2) (MUL 3 4)))', + 'a NOT BETWEEN 1 AND 2 AND b' => '(BETWEEN_NOT a (AND (AND 1 2) b))', + 'a = b = c' => '(EQUALS (EQUALS a b) c)', + 'a < b > c' => '(GREATER (LESS a b) c)', + 'a AGAINST b = c' => '(AGAINST a (EQUALS b c))', + 'a @@ b AND c' => '(OP_MATCHES a (AND b c))', + 'a % b * c' => '(MUL (MOD a b) c)', + 'a / b ^ c' => '(BITWISE_XOR (DIV a b) c)', + 'NOT NOT a' => '(NOT (NOT a))', + '- - a' => '(MINUS (MINUS a))', + 'a IS NULL IS NOT NULL' => '(ISNOTNULL (ISNULL a))', + 'CASE a WHEN b + 1 THEN c * 2 ELSE d END + 5' => '(ADD (CASE a ((WHEN (ADD b 1) (MUL c 2)) (ELSE d))) 5)', + 'NOT a IS NULL' => '(ISNULL (NOT a))', + 'a ILIKE b NOT ILIKE c' => '(ILIKE a (NILIKE b c))', + '(a + b) * c' => '(MUL (ENCLOSED (ADD a b)) c)', + 'a IN (SELECT x FROM s) = 1' => '(EQUALS (IN a (SELECT)) 1)', + ]; + + $provider = []; + foreach ($cases as $expression => $tree) { + $provider[$expression] = [$expression, $tree]; + } + + return $provider; + } + + #[DataProvider('expressionProvider')] + public function testPrecedence(string $expression, string $tree): void + { + $ast = (new Parser())->parse('SELECT ' . $expression . ' FROM r'); + + $this->assertSame($tree, $this->sexpr($ast['select']['columns'][0]['column'] ?? [])); + } + + /** + * @param array $node + */ + private function sexpr(array $node): string + { + if (array_is_list($node)) { + return '(' . implode(' ', array_map(fn (array $item): string => $this->sexpr($item), $node)) . ')'; + } + + $type = Opcode::from($node['type']); + + return match ($type) { + Opcode::QUALIFIED => $node['name'], + Opcode::INTEGER, Opcode::DOUBLE, Opcode::HINTEGER => $node['value'], + Opcode::NULL, Opcode::TRUE, Opcode::FALSE => $type->name, + Opcode::SELECT => '(SELECT)', + default => '(' . $type->name + . (isset($node['left']) ? ' ' . $this->sexpr($node['left']) : '') + . (isset($node['right']) ? ' ' . $this->sexpr($node['right']) : '') . ')', + }; + } +} diff --git a/tests/unit/Parser/StatusTest.php b/tests/unit/Parser/StatusTest.php deleted file mode 100644 index 64663e7..0000000 --- a/tests/unit/Parser/StatusTest.php +++ /dev/null @@ -1,82 +0,0 @@ -assertSame(Status::PHQL_PARSING_OK, $status->getStatus()); - $this->assertNull($status->getAst()); - $this->assertNull($status->getSyntaxError()); - $this->assertNull($status->getToken()); - $this->assertFalse($status->getEnableLiterals()); - } - - public function testEnableLiterals(): void - { - $state = new State('SELECT'); - $status = new Status($state); - - $status->setEnableLiterals(true); - - $this->assertTrue($status->getEnableLiterals()); - } - - public function testGetState(): void - { - $state = new State('SELECT'); - $status = new Status($state); - - $this->assertSame($state, $status->getState()); - } - - public function testNoGetRetMethod(): void - { - $state = new State('SELECT'); - $status = new Status($state); - - $this->assertFalse(method_exists($status, 'getRet')); - $this->assertFalse(method_exists($status, 'setRet')); - } - - public function testSetAndGetAst(): void - { - $state = new State('SELECT'); - $status = new Status($state); - $ast = ['type' => 309, 'select' => []]; - - $status->setAst($ast); - - $this->assertSame($ast, $status->getAst()); - } - - public function testSetStatus(): void - { - $state = new State('SELECT'); - $status = new Status($state); - - $status->setStatus(Status::PHQL_PARSING_FAILED); - - $this->assertSame(Status::PHQL_PARSING_FAILED, $status->getStatus()); - } - - public function testSetSyntaxError(): void - { - $state = new State('SELECT'); - $status = new Status($state); - - $status->setSyntaxError('Unexpected token'); - - $this->assertSame('Unexpected token', $status->getSyntaxError()); - } -} diff --git a/tests/unit/Parser/TokenStreamTest.php b/tests/unit/Parser/TokenStreamTest.php new file mode 100644 index 0000000..ee9ba58 --- /dev/null +++ b/tests/unit/Parser/TokenStreamTest.php @@ -0,0 +1,239 @@ + + * + * For the full copyright and license information, please view the LICENSE.txt + * file that was distributed with this source code. + */ + +declare(strict_types=1); + +namespace Phalcon\Phql\Tests\Unit\Parser; + +use Phalcon\Phql\Exception; +use Phalcon\Phql\Parser\TokenStream; +use Phalcon\Phql\Scanner\Opcode; +use Phalcon\Phql\Scanner\Token; +use Phalcon\Phql\Tests\AbstractUnitTestCase; +use PHPUnit\Framework\Attributes\DataProvider; + +use function str_repeat; + +/** + * The token loop of cphalcon's base.c and the messages of its scanner and + * of parser.php.lemon's %syntax_error, byte for byte. + */ +final class TokenStreamTest extends AbstractUnitTestCase +{ + /** + * @return array + */ + public static function literalProvider(): array + { + return [ + 'integer' => ['1'], + 'double' => ['1.0'], + 'string' => ["'a'"], + 'hex' => ['0x1'], + 'true' => ['TRUE'], + 'false' => ['FALSE'], + ]; + } + + #[DataProvider('literalProvider')] + public function testDisabledLiteralFails(string $literal): void + { + $stream = new TokenStream('SELECT ' . $literal, false); + $stream->next(); + + $this->expectException(Exception::class); + $this->expectExceptionMessage('Literals are disabled in PHQL statements'); + + $stream->next(); + } + + public function testDisabledLiteralsStillAllowNullAndPlaceholders(): void + { + $stream = new TokenStream('NULL :a: ?0 {b}', false); + $opcodes = []; + while (($token = $stream->next())->opcode !== Token::EOF) { + $opcodes[] = $token->opcode; + } + + $this->assertSame( + [ + Opcode::NULL->value, + Opcode::SPLACEHOLDER->value, + Opcode::NPLACEHOLDER->value, + Opcode::BPLACEHOLDER->value, + ], + $opcodes + ); + } + + public function testLoneColonIsAnUnknownOpcode(): void + { + $stream = new TokenStream('SELECT : FROM r', true); + $stream->next(); + + $this->expectException(Exception::class); + $this->expectExceptionMessage('Scanner: Unknown opcode 58'); + + $stream->next(); + } + + public function testNextSkipsWhitespace(): void + { + $stream = new TokenStream(" a \n b ", true); + + $this->assertSame( + ['a', 'b', Token::EOF], + [$stream->next()->value, $stream->next()->value, $stream->next()->opcode] + ); + } + + public function testScanningErrorAfterControlByteQuotesTheRest(): void + { + $this->assertScanningError( + "SELECT \x01 FROM x", + "Scanning error before ' FROM x' when parsing: SELECT \x01 FROM x (15)" + ); + } + + /** + * Before the first token start_length is 0: the excerpt is not cut, and + * C's snprintf() buffer (64 + start_length + statement length bytes) is + * too small for the message, which loses its end. + */ + public function testScanningErrorAtFirstByteOverflowsCsBuffer(): void + { + $rest = str_repeat('b', 30); + + $this->assertScanningError( + "\x01" . $rest, + "Scanning error before '{$rest}' when parsing: \x01" . str_repeat('b', 24) + ); + } + + public function testScanningErrorCutsAfterSixteenBytes(): void + { + $rest = str_repeat('b', 16); + + $this->assertScanningError( + "SELECT a\x01" . $rest, + "Scanning error before '{$rest}...' when parsing: SELECT a\x01{$rest} (25)" + ); + } + + public function testScanningErrorOfUnterminatedString(): void + { + $this->assertScanningError( + 'SELECT * FROM Robots WHERE a = "abc', + "Scanning error before 'abc' when parsing: SELECT * FROM Robots WHERE a = \"abc (35)" + ); + } + + public function testStackOverflowMessage(): void + { + $this->assertSame( + 'Parsing failed, the PHQL statement is nested too deeply', + (new TokenStream('a', true))->stackOverflow()->getMessage() + ); + } + + public function testSyntaxErrorAfterNulQuotesPastTheNul(): void + { + $this->assertSyntaxError( + "SELECT * FROM r WHERE\0x", + 6, + "Syntax error, unexpected token WHERE, near to 'x', when parsing: SELECT * FROM r WHERE (23)" + ); + } + + public function testSyntaxErrorAtEof(): void + { + $this->assertSyntaxError('SELECT', 2, 'Syntax error, unexpected EOF'); + } + + public function testSyntaxErrorOnLastByteReadsAsEof(): void + { + $this->assertSyntaxError('SELECT * FROM r WHERE a = =', 8, 'Syntax error, unexpected EOF'); + } + + public function testSyntaxErrorPrintsEmptyValue(): void + { + $this->assertSyntaxError( + "SELECT a '' FROM r", + 3, + "Syntax error, unexpected token STRING(), near to ' FROM r', when parsing: SELECT a '' FROM r (18)" + ); + } + + public function testSyntaxErrorPrintsHexaIntegerName(): void + { + $this->assertSyntaxError( + 'SELECT a 0x1F FROM r', + 3, + "Syntax error, unexpected token HEXAINTEGER(0x1F), near to ' FROM r', " + . 'when parsing: SELECT a 0x1F FROM r (20)' + ); + } + + public function testSyntaxErrorPrintsTheRestAndLength(): void + { + $this->assertSyntaxError( + 'SELECT * FROM Robots WHERE id = = 1', + 8, + "Syntax error, unexpected token EQUALS, near to ' 1', " + . 'when parsing: SELECT * FROM Robots WHERE id = = 1 (35)' + ); + } + + public function testSyntaxErrorPrintsUnknownForUnnamedTokens(): void + { + $this->assertSyntaxError( + 'SELECT a TRUE FROM r', + 3, + "Syntax error, unexpected token UNKNOWN, near to ' FROM r', when parsing: SELECT a TRUE FROM r (20)" + ); + } + + public function testSyntaxErrorPrintsZeroValue(): void + { + $this->assertSyntaxError( + 'SELECT 0 0 FROM r', + 3, + "Syntax error, unexpected token INTEGER(0), near to ' FROM r', when parsing: SELECT 0 0 FROM r (17)" + ); + } + + private function assertScanningError(string $phql, string $message): void + { + $stream = new TokenStream($phql, true); + + try { + while ($stream->next()->opcode !== Token::EOF) { + continue; + } + $this->fail('no scanning error'); + } catch (Exception $ex) { + $this->assertSame($message, $ex->getMessage()); + } + } + + /** + * Reports a syntax error on the nth token returned by next(). + */ + private function assertSyntaxError(string $phql, int $nth, string $message): void + { + $stream = new TokenStream($phql, true); + for ($i = 1; $i < $nth; $i++) { + $stream->next(); + } + + $this->assertSame($message, $stream->syntaxError($stream->next())->getMessage()); + } +} diff --git a/tests/unit/ParserTest.php b/tests/unit/ParserTest.php index 8b3102c..452bb2d 100644 --- a/tests/unit/ParserTest.php +++ b/tests/unit/ParserTest.php @@ -1,5 +1,14 @@ + * + * For the full copyright and license information, please view the LICENSE.txt + * file that was distributed with this source code. + */ + declare(strict_types=1); namespace Phalcon\Phql\Tests\Unit; @@ -8,177 +17,169 @@ use Phalcon\Phql\Parser; use Phalcon\Phql\Scanner\Opcode; use Phalcon\Phql\Tests\AbstractUnitTestCase; -use Phalcon\Phql\Tokens; +use PHPUnit\Framework\Attributes\DataProvider; + +use function gc_collect_cycles; +use function str_repeat; +/** + * The public facade behaves as cphalcon's Lang::parsePHQL() with the AST + * cache off: the same AST, the same messages, and no result at all for a + * statement without tokens. The parity corpus (FixturesTest) covers the + * grammar; these tests pin the facade's contract. + */ final class ParserTest extends AbstractUnitTestCase { - public function testLiteralsDisabledBlocksDouble(): void + /** + * @return array + */ + public static function blankProvider(): array { - $this->expectException(Exception::class); - $this->expectExceptionMessage('Literals are disabled in PHQL statements'); - - (new Parser())->setEnableLiterals(false)->parse('SELECT 1.5 FROM Invoices'); + return [ + 'empty' => [''], + 'whitespace' => [" \t\r\n"], + 'nul first' => ["\0SELECT * FROM Robots"], + ]; } - public function testLiteralsDisabledBlocksFalse(): void + /** + * @return array + */ + public static function literalProvider(): array { - $this->expectException(Exception::class); - $this->expectExceptionMessage('Literals are disabled in PHQL statements'); - - (new Parser())->setEnableLiterals(false)->parse('SELECT FALSE FROM Invoices'); + return [ + 'integer' => ['SELECT 1 FROM Invoices'], + 'double' => ['SELECT 1.5 FROM Invoices'], + 'string' => ["SELECT 'a' FROM Invoices"], + 'hex' => ['SELECT 0x1F FROM Invoices'], + 'true' => ['SELECT TRUE FROM Invoices'], + 'false' => ['SELECT FALSE FROM Invoices'], + ]; } - public function testLiteralsDisabledBlocksHinteger(): void + #[DataProvider('blankProvider')] + public function testBlankStatementHasNoResult(string $phql): void { - $this->expectException(Exception::class); - $this->expectExceptionMessage('Literals are disabled in PHQL statements'); - - (new Parser())->setEnableLiterals(false)->parse('SELECT 0xFF FROM Invoices'); + $this->assertNull((new Parser())->parse($phql)); } - public function testLiteralsDisabledBlocksInteger(): void + public function testDisabledLiteralsAllowPlaceholdersAndNull(): void { - $this->expectException(Exception::class); - $this->expectExceptionMessage('Literals are disabled in PHQL statements'); - - (new Parser())->setEnableLiterals(false)->parse('SELECT 1 FROM Invoices'); - } - - public function testLiteralsDisabledBlocksString(): void - { - $this->expectException(Exception::class); - $this->expectExceptionMessage('Literals are disabled in PHQL statements'); + $ast = (new Parser())->setEnableLiterals(false)->parse('SELECT * FROM Invoices WHERE a = :a: AND b IS NULL'); - (new Parser())->setEnableLiterals(false)->parse("SELECT 'hello' FROM Invoices"); + $this->assertSame(Opcode::SELECT->value, $ast['type'] ?? null); } - public function testLiteralsDisabledBlocksTrue(): void + #[DataProvider('literalProvider')] + public function testDisabledLiteralsAreRejected(string $phql): void { $this->expectException(Exception::class); $this->expectExceptionMessage('Literals are disabled in PHQL statements'); - (new Parser())->setEnableLiterals(false)->parse('SELECT TRUE FROM Invoices'); + (new Parser())->setEnableLiterals(false)->parse($phql); } - public function testLiteralsEnabledByDefault(): void + #[DataProvider('literalProvider')] + public function testLiteralsAreEnabledByDefault(string $phql): void { - // Integer literal should parse without error when literals are enabled (default) - $result = (new Parser())->parse('SELECT 1 FROM Invoices'); - $this->assertIsArray($result); + $this->assertSame(Opcode::SELECT->value, (new Parser())->parse($phql)['type'] ?? null); } - public function testParseEmptyStringThrows(): void + public function testLoneColonIsAnUnknownOpcode(): void { $this->expectException(Exception::class); - $this->expectExceptionMessage('PHQL statement cannot be NULL'); + $this->expectExceptionMessage('Scanner: Unknown opcode 58'); - (new Parser())->parse(''); + (new Parser())->parse('SELECT a : b FROM Invoices'); } - public function testParseSimpleSelect(): void - { - $result = (new Parser())->parse('SELECT * FROM Invoices'); - - $this->assertIsArray($result); - $this->assertSame(Opcode::SELECT->value, $result['type']); - $this->assertArrayHasKey('select', $result); - } - - public function testScannerErrorLongMessage(): void + public function testNestingIsLimited(): void { $this->expectException(Exception::class); - $this->expectExceptionMessageMatches('/Scanning error before/'); - $this->expectExceptionMessageMatches('/\.\.\./'); + $this->expectExceptionMessage('Parsing failed, the PHQL statement is nested too deeply'); - (new Parser())->parse('#' . str_repeat('x', 20)); + (new Parser())->parse('SELECT ' . str_repeat('(', 300) . '1' . str_repeat(')', 300) . ' FROM Invoices'); } - public function testScannerErrorShortMessage(): void + public function testParsesSelect(): void { - $this->expectException(Exception::class); - $this->expectExceptionMessageMatches('/Scanning error before/'); - - (new Parser())->parse('#'); + $this->assertSame( + [ + 'type' => Opcode::SELECT->value, + 'select' => [ + 'columns' => [['type' => Opcode::STARALL->value]], + 'tables' => ['qualifiedName' => ['type' => Opcode::QUALIFIED->value, 'name' => 'Invoices']], + ], + ], + (new Parser())->parse('SELECT * FROM Invoices') + ); } - public function testScannerErrorTrailingBackslash(): void + /** + * Every object a parse creates must be freed by reference counting as + * soon as parse() returns or throws; a reference cycle would leave the + * whole parser behind for the cycle collector on every call. + */ + public function testParsingLeavesNoReferenceCycles(): void { + gc_collect_cycles(); $parser = new Parser(); - foreach (['"abc\\', "'abc\\"] as $literal) { - $caught = null; + for ($i = 0; $i < 50; $i++) { + $parser->setEnableLiterals(true)->parse('SELECT a FROM r WHERE b IN (SELECT c FROM s)'); try { - $parser->parse('SELECT * FROM Robots WHERE name = ' . $literal); - } catch (Exception $ex) { - $caught = $ex; + $parser->setEnableLiterals(false)->parse("SELECT * FROM r WHERE a = 'x'"); + } catch (Exception) { + // Expected: literals are disabled. } - - $this->assertNotNull($caught, $literal); - $this->assertStringContainsString('Scanning error', $caught->getMessage()); } - } - public function testSetEnableLiteralsChaining(): void - { - // Should not throw — fluent chaining works - $result = (new Parser())->setEnableLiterals(true)->parse('SELECT * FROM Invoices'); - $this->assertIsArray($result); + $this->assertSame(0, gc_collect_cycles()); } - public function testSetEnableLiteralsReturnsSelf(): void + public function testScanningErrorMessage(): void { - $parser = new Parser(); - $result = $parser->setEnableLiterals(false); + $this->expectException(Exception::class); + $this->expectExceptionMessage( + "Scanning error before ' xxxxxxxxxxxxxxx...' when parsing: SELECT a # xxxxxxxxxxxxxxxxxxxx (31)" + ); - $this->assertSame($parser, $result); + (new Parser())->parse('SELECT a # ' . str_repeat('x', 20)); } - public function testSyntaxErrorReportsTokenName(): void + public function testSetEnableLiteralsReturnsTheParser(): void { $parser = new Parser(); - // Unexpected token: the name comes from Tokens::$names. - $caught = null; - try { - $parser->parse('SELECT FROM Robots'); - } catch (Exception $ex) { - $caught = $ex; - } - $this->assertNotNull($caught); - $this->assertMatchesRegularExpression('/^Syntax error, unexpected token FROM/', $caught->getMessage()); - - // Unexpected end of input. - $this->expectException(Exception::class); - $this->expectExceptionMessageMatches('/^Syntax error, unexpected EOF/'); - - $parser->parse('SELECT * FROM Robots WHERE ((('); + $this->assertSame($parser, $parser->setEnableLiterals(false)); } - public function testThrowsPhqlException(): void + public function testStringLiteralsAreUnescaped(): void { - try { - (new Parser())->parse(''); - } catch (\Throwable $e) { - $this->assertInstanceOf(Exception::class, $e); - $this->assertNotInstanceOf(\RuntimeException::class, $e); - } + $ast = (new Parser())->parse("SELECT 'a\\nb\\'c\\%' FROM Invoices"); + + $this->assertSame("a\nb'c\\%", $ast['select']['columns'][0]['column']['value'] ?? null); } - public function testTokensNamesMatchOpcodes(): void + public function testSyntaxErrorMessage(): void { - $this->assertNotEmpty(Tokens::$names); + $this->expectException(Exception::class); + $this->expectExceptionMessage( + "Syntax error, unexpected token EQUALS, near to ' 1', " + . 'when parsing: SELECT * FROM Robots WHERE id = = 1 (35)' + ); - foreach (Tokens::$names as $name => $code) { - $this->assertNotNull(Opcode::tryFrom($code), $name); - } + (new Parser())->parse('SELECT * FROM Robots WHERE id = = 1'); } - public function testUnknownOpcodeThrows(): void + public function testTrailingBackslashInStringIsAScanningError(): void { $this->expectException(Exception::class); - $this->expectExceptionMessageMatches('/Unknown opcode/'); + $this->expectExceptionMessage( + "Scanning error before 'abc\\' when parsing: SELECT * FROM Robots WHERE name = 'abc\\ (39)" + ); - (new Parser())->parse('SELECT : FROM Invoices'); + (new Parser())->parse("SELECT * FROM Robots WHERE name = 'abc\\"); } } diff --git a/tests/unit/Scanner/ScannerStatusTest.php b/tests/unit/Scanner/ScannerStatusTest.php deleted file mode 100644 index 39c20a1..0000000 --- a/tests/unit/Scanner/ScannerStatusTest.php +++ /dev/null @@ -1,32 +0,0 @@ -assertSame(-1, ScannerStatus::EOF->value); - $this->assertSame(-2, ScannerStatus::ERR->value); - $this->assertSame(-3, ScannerStatus::IMPOSSIBLE->value); - $this->assertSame(0, ScannerStatus::OK->value); - } - - public function testFromInt(): void - { - $this->assertSame(ScannerStatus::EOF, ScannerStatus::from(-1)); - $this->assertSame(ScannerStatus::ERR, ScannerStatus::from(-2)); - $this->assertSame(ScannerStatus::IMPOSSIBLE, ScannerStatus::from(-3)); - $this->assertSame(ScannerStatus::OK, ScannerStatus::from(0)); - } - - public function testTryFromUnknown(): void - { - $this->assertNull(ScannerStatus::tryFrom(99)); - } -} diff --git a/tests/unit/Scanner/ScannerTest.php b/tests/unit/Scanner/ScannerTest.php index 8c839e2..a295b78 100644 --- a/tests/unit/Scanner/ScannerTest.php +++ b/tests/unit/Scanner/ScannerTest.php @@ -1,274 +1,213 @@ + * + * For the full copyright and license information, please view the LICENSE.txt + * file that was distributed with this source code. + */ + declare(strict_types=1); namespace Phalcon\Phql\Tests\Unit\Scanner; use Phalcon\Phql\Scanner\Opcode; use Phalcon\Phql\Scanner\Scanner; -use Phalcon\Phql\Scanner\ScannerStatus; -use Phalcon\Phql\Scanner\State; +use Phalcon\Phql\Scanner\Token; use Phalcon\Phql\Tests\AbstractUnitTestCase; +use PHPUnit\Framework\Attributes\DataProvider; -final class ScannerTest extends AbstractUnitTestCase -{ - public function testBitwiseOperators(): void - { - $opcodes = $this->scanAll('& | ~ ^'); - $this->assertSame([ - Opcode::BITWISE_AND, - Opcode::BITWISE_OR, - Opcode::BITWISE_NOT, - Opcode::BITWISE_XOR, - ], $opcodes); - } - - public function testBracketPlaceholder(): void - { - $state = new State('{id}'); - $scanner = new Scanner($state); - - $scanner->scanForToken(); - $token = $scanner->getToken(); - - $this->assertSame(Opcode::BPLACEHOLDER, $token->opcode); - $this->assertSame('id', $token->value); - } - - public function testComparisonOperators(): void - { - $opcodes = $this->scanAll('= != ! < <= > >='); - $this->assertSame([ - Opcode::EQUALS, - Opcode::NOTEQUALS, - Opcode::NOT, - Opcode::LESS, - Opcode::LESSEQUAL, - Opcode::GREATER, - Opcode::GREATEREQUAL, - ], $opcodes); - } - - public function testDialectSpecificOperators(): void - { - $opcodes = $this->scanAll('@@ @> <@ && || -> ->> #> #>>'); - $this->assertSame([ - Opcode::OP_MATCHES, - Opcode::OP_CONTAINS, - Opcode::OP_CONTAINED, - Opcode::OP_OVERLAPS, - Opcode::OP_CONCAT, - Opcode::OP_JSON_GET, - Opcode::OP_JSON_GET_TEXT, - Opcode::OP_JSON_PATH, - Opcode::OP_JSON_PATH_TEXT, - ], $opcodes); - } - - public function testDialectSpecificOperatorsDoNotBreakNeighbours(): void - { - $opcodes = $this->scanAll('- < > !! ->'); - $this->assertSame([ - Opcode::SUB, - Opcode::LESS, - Opcode::GREATER, - Opcode::NOT, - Opcode::NOT, - Opcode::OP_JSON_GET, - ], $opcodes); - } - - public function testDoubleLiteral(): void - { - $state = new State('3.14'); - $scanner = new Scanner($state); - - $scanner->scanForToken(); - $token = $scanner->getToken(); - - $this->assertSame(Opcode::DOUBLE, $token->opcode); - $this->assertSame('3.14', $token->value); - } - - public function testDoubleQuotedString(): void - { - $state = new State('"world"'); - $scanner = new Scanner($state); - - $scanner->scanForToken(); - $token = $scanner->getToken(); - - $this->assertSame(Opcode::STRING, $token->opcode); - $this->assertSame('world', $token->value); - } - - public function testEmptyInputReturnsEof(): void - { - $state = new State(''); - $scanner = new Scanner($state); - - $this->assertSame(ScannerStatus::EOF, $scanner->scanForToken()); - } - - public function testFromKeyword(): void - { - $opcodes = $this->scanAll('FROM'); - $this->assertSame([Opcode::FROM], $opcodes); - } - - public function testHexIntegerLiteral(): void - { - $state = new State('0xFF'); - $scanner = new Scanner($state); +use function array_column; +use function count; +use function setlocale; - $scanner->scanForToken(); - $token = $scanner->getToken(); - - $this->assertSame(Opcode::HINTEGER, $token->opcode); - } +use const LC_CTYPE; - public function testIdentifier(): void - { - $state = new State('Invoices'); - $scanner = new Scanner($state); - - $scanner->scanForToken(); - $token = $scanner->getToken(); - - $this->assertSame(Opcode::IDENTIFIER, $token->opcode); - $this->assertSame('Invoices', $token->value); - } - - public function testIntegerLiteral(): void - { - $state = new State('42'); - $scanner = new Scanner($state); - - $scanner->scanForToken(); - $token = $scanner->getToken(); - - $this->assertSame(Opcode::INTEGER, $token->opcode); - $this->assertSame('42', $token->value); - } - - public function testNamedPlaceholder(): void - { - $state = new State(':id:'); - $scanner = new Scanner($state); - - $scanner->scanForToken(); - $token = $scanner->getToken(); - - $this->assertSame(Opcode::SPLACEHOLDER, $token->opcode); - $this->assertSame('id', $token->value); - } - - public function testNoLegacyRetcodeConstants(): void - { - $this->assertFalse(defined('Phalcon\Phql\Scanner\Scanner::PHQL_SCANNER_RETCODE_EOF')); - $this->assertFalse(defined('Phalcon\Phql\Scanner\Scanner::PHQL_SCANNER_RETCODE_ERR')); - $this->assertFalse(defined('Phalcon\Phql\Scanner\Scanner::PHQL_SCANNER_RETCODE_IMPOSSIBLE')); - } - - public function testNumericPlaceholder(): void - { - $state = new State('?0'); - $scanner = new Scanner($state); - - $scanner->scanForToken(); - $token = $scanner->getToken(); - - $this->assertSame(Opcode::NPLACEHOLDER, $token->opcode); - } +/** + * Token boundaries follow cphalcon's scanner.re: the longest match wins, and + * between matches of equal length the rule listed first. + */ +final class ScannerTest extends AbstractUnitTestCase +{ + /** + * @return array + */ + public static function errorProvider(): array + { + return [ + 'unterminated string' => ['"abc', 0, 1], + 'control byte' => ["\x01 x", 0, 1], + 'error after tokens' => ['a ?', 2, 3], + 'backslash without name' => ['\\\\x', 0, 1], + 'hash alone' => ['#', 0, 1], + 'empty braces' => ['{}', 0, 1], + 'newline in brackets' => ["[a\nb]", 0, 1], + 'escaped newline in string' => ["'a\\\nb'", 0, 1], + 'trailing backslash' => ["'abc\\'", 0, 1], + 'utf-8 lead byte' => ['ü', 0, 1], + ]; + } + + /** + * @return array}> + */ + public static function tokenProvider(): array + { + $t = static fn (Opcode $opcode, ?string $value = null): array => [$opcode->value, $value]; + + return [ + 'integer' => ['123', [$t(Opcode::INTEGER, '123')]], + 'hex' => ['0x1F', [$t(Opcode::HINTEGER, '0x1F')]], + 'hex lowercase' => ['0xab', [$t(Opcode::HINTEGER, '0xab')]], + 'bare 0x is an identifier' => ['0x', [$t(Opcode::IDENTIFIER, '0x')]], + 'digits then hex letters' => ['1abc', [$t(Opcode::IDENTIFIER, '1abc')]], + 'exponent is an identifier' => ['1e5', [$t(Opcode::IDENTIFIER, '1e5')]], + 'hex letters' => ['abc', [$t(Opcode::IDENTIFIER, 'abc')]], + 'uppercase X splits' => ['0X1F', [$t(Opcode::INTEGER, '0'), $t(Opcode::IDENTIFIER, 'X1F')]], + 'double' => ['1.5', [$t(Opcode::DOUBLE, '1.5')]], + 'double without integer' => ['.5', [$t(Opcode::DOUBLE, '.5')]], + 'double without fraction' => ['5.', [$t(Opcode::DOUBLE, '5.')]], + 'two doubles' => ['1.2.3', [$t(Opcode::DOUBLE, '1.2'), $t(Opcode::DOUBLE, '.3')]], + 'dot' => [ + 'a.b', + [$t(Opcode::IDENTIFIER, 'a'), $t(Opcode::DOT), $t(Opcode::IDENTIFIER, 'b')], + ], + 'numbered placeholder' => ['?0', [$t(Opcode::NPLACEHOLDER, '?0')]], + 'string placeholder' => [':a-b:', [$t(Opcode::SPLACEHOLDER, 'a-b')]], + 'bound placeholder' => ['{a:int}', [$t(Opcode::BPLACEHOLDER, 'a:int')]], + 'lone colon' => [':', [$t(Opcode::COLON)]], + 'leading backslash dropped' => ['\A\B', [$t(Opcode::IDENTIFIER, 'A\B')]], + 'colons inside identifier' => ['x::int', [$t(Opcode::IDENTIFIER, 'x::int')]], + 'bracketed identifier raw' => ['[a\]b]', [$t(Opcode::IDENTIFIER, 'a\]b')]], + 'empty brackets' => ['[]', [$t(Opcode::IDENTIFIER, '')]], + 'string escapes' => ["'a\\nb\\'c\\%'", [$t(Opcode::STRING, "a\nb'c\\%")]], + 'double quoted escapes' => ['"a\\"b\\\\c\\td"', [$t(Opcode::STRING, "a\"b\\c\td")]], + 'empty string' => ["''", [$t(Opcode::STRING, '')]], + 'raw newline in string' => ["'a\nb'", [$t(Opcode::STRING, "a\nb")]], + 'keyword' => ['SELECT', [$t(Opcode::SELECT)]], + 'keyword lowercase' => ['select', [$t(Opcode::SELECT)]], + 'keyword prefix' => ['selected', [$t(Opcode::IDENTIFIER, 'selected')]], + 'keyword with colon' => ['select:', [$t(Opcode::IDENTIFIER, 'select:')]], + 'not between' => ['NOT BETWEEN', [$t(Opcode::BETWEEN_NOT)]], + 'not between then letter' => ['NOT BETWEENX', [$t(Opcode::BETWEEN_NOT), $t(Opcode::IDENTIFIER, 'X')]], + 'not two spaces between' => [ + 'not between', + [$t(Opcode::NOT), $t(Opcode::IGNORE), $t(Opcode::BETWEEN)], + ], + 'whitespace run' => [" \t\r\n", [$t(Opcode::IGNORE)]], + 'json get text' => ['->>', [$t(Opcode::OP_JSON_GET_TEXT)]], + 'json get' => ['->', [$t(Opcode::OP_JSON_GET)]], + 'json path text' => ['#>>', [$t(Opcode::OP_JSON_PATH_TEXT)]], + 'json path' => ['#>', [$t(Opcode::OP_JSON_PATH)]], + 'not equals' => ['<>', [$t(Opcode::NOTEQUALS)]], + 'bang not equals' => ['!=', [$t(Opcode::NOTEQUALS)]], + 'bang' => ['!', [$t(Opcode::NOT)]], + 'contained' => ['<@', [$t(Opcode::OP_CONTAINED)]], + 'less equal' => ['<=', [$t(Opcode::LESSEQUAL)]], + 'matches' => ['@@', [$t(Opcode::OP_MATCHES)]], + 'contains' => ['@>', [$t(Opcode::OP_CONTAINS)]], + 'overlaps' => ['&&', [$t(Opcode::OP_OVERLAPS)]], + 'concat' => ['||', [$t(Opcode::OP_CONCAT)]], + 'single char operators' => [ + '+-*/%,()=<>~^&|', + [ + $t(Opcode::ADD), $t(Opcode::SUB), $t(Opcode::MUL), $t(Opcode::DIV), $t(Opcode::MOD), + $t(Opcode::COMMA), $t(Opcode::PARENTHESES_OPEN), $t(Opcode::PARENTHESES_CLOSE), + $t(Opcode::EQUALS), $t(Opcode::NOTEQUALS), $t(Opcode::BITWISE_NOT), + $t(Opcode::BITWISE_XOR), $t(Opcode::BITWISE_AND), $t(Opcode::BITWISE_OR), + ], + ], + 'nul ends input' => ["a\0b", [$t(Opcode::IDENTIFIER, 'a')]], + ]; + } + + public function testCursorFollowsEachToken(): void + { + $scanner = new Scanner('ab 1'); + $cursors = []; + while ($scanner->next()->opcode !== Token::EOF) { + $cursors[] = $scanner->cursor(); + } - public function testOperators(): void - { - $opcodes = $this->scanAll('+ - * / %'); - $this->assertSame([ - Opcode::ADD, - Opcode::SUB, - Opcode::MUL, - Opcode::DIV, - Opcode::MOD, - ], $opcodes); + $this->assertSame([2, 4, 5], $cursors); } - public function testReturnTypeIsScannerStatus(): void + public function testEofSkipsPastTheNul(): void { - $state = new State('SELECT'); - $scanner = new Scanner($state); - $result = $scanner->scanForToken(); + $scanner = new Scanner("a\0b"); + $scanner->next(); + $eof = $scanner->next(); - $this->assertInstanceOf(ScannerStatus::class, $result); + $this->assertSame([Token::EOF, 2], [$eof->opcode, $scanner->cursor()]); } - public function testSelectFromSequence(): void + /** + * cphalcon matches keywords byte by byte. Before PHP 8.2 strtolower() + * follows the locale, and under a Turkish one `I` does not lower to `i`. + * CI and the development image generate tr_TR.UTF-8; where it is missing + * the test runs under the current locale rather than being skipped. + */ + public function testKeywordsIgnoreTheLocale(): void { - $opcodes = $this->scanAll('SELECT * FROM Invoices'); - $this->assertSame([ - Opcode::SELECT, - Opcode::MUL, - Opcode::FROM, - Opcode::IDENTIFIER, - ], $opcodes); - } - - public function testSelectKeyword(): void - { - $opcodes = $this->scanAll('SELECT'); - $this->assertSame([Opcode::SELECT], $opcodes); - } + $previous = (string) setlocale(LC_CTYPE, '0'); + setlocale(LC_CTYPE, 'tr_TR.UTF-8', 'tr_TR.ISO-8859-9', 'tr_TR'); - public function testSingleQuotedString(): void - { - $state = new State("'hello'"); - $scanner = new Scanner($state); - - $scanner->scanForToken(); - $token = $scanner->getToken(); + try { + $opcodes = array_column($this->scanAll(new Scanner('IN INTO LIMIT DISTINCT')), 0); + } finally { + setlocale(LC_CTYPE, $previous); + } - $this->assertSame(Opcode::STRING, $token->opcode); - $this->assertSame('hello', $token->value); + $this->assertSame( + [ + Opcode::IN->value, + Opcode::IGNORE->value, + Opcode::INTO->value, + Opcode::IGNORE->value, + Opcode::LIMIT->value, + Opcode::IGNORE->value, + Opcode::DISTINCT->value, + ], + $opcodes + ); } - public function testUnknownCharacterReturnsErr(): void + #[DataProvider('errorProvider')] + public function testScanErrorLeavesCursorAfterBadByte(string $phql, int $tokensBefore, int $cursor): void { - $state = new State('#'); - $scanner = new Scanner($state); - $result = $scanner->scanForToken(); + $scanner = new Scanner($phql); + $tokens = $this->scanAll($scanner); - // '#' is not a valid PHQL token — scanner returns ERR - $this->assertSame(ScannerStatus::ERR, $result); + $this->assertSame( + [$tokensBefore, [Token::SCAN_ERROR, null], $cursor], + [count($tokens) - 1, $tokens[count($tokens) - 1], $scanner->cursor()] + ); } - public function testWhereKeyword(): void + /** + * @param list $expected + */ + #[DataProvider('tokenProvider')] + public function testScansTokens(string $phql, array $expected): void { - $opcodes = $this->scanAll('WHERE'); - $this->assertSame([Opcode::WHERE], $opcodes); + $this->assertSame($expected, $this->scanAll(new Scanner($phql))); } - public function testWhitespaceProducesIgnore(): void + /** + * @return list every token up to EOF or a scanning error + */ + private function scanAll(Scanner $scanner): array { - $state = new State(' '); - $scanner = new Scanner($state); - - $scanner->scanForToken(); - $this->assertSame(Opcode::IGNORE, $scanner->getToken()->opcode); - } - - private function scanAll(string $input): array - { - $state = new State($input); - $scanner = new Scanner($state); - $opcodes = []; - - while (($scanner->scanForToken()) === ScannerStatus::OK) { - $token = $scanner->getToken(); - if ($token->opcode !== Opcode::IGNORE) { - $opcodes[] = $token->opcode; + $tokens = []; + do { + $token = $scanner->next(); + if ($token->opcode !== Token::EOF) { + $tokens[] = [$token->opcode, $token->value]; } - } + } while ($token->opcode !== Token::EOF && $token->opcode !== Token::SCAN_ERROR); - return $opcodes; + return $tokens; } } diff --git a/tests/unit/Scanner/StateTest.php b/tests/unit/Scanner/StateTest.php deleted file mode 100644 index 47310c2..0000000 --- a/tests/unit/Scanner/StateTest.php +++ /dev/null @@ -1,73 +0,0 @@ -setActiveToken(Opcode::SELECT); - $state->setActiveToken(null); - - $this->assertNull($state->getActiveToken()); - } - - public function testConstruction(): void - { - $state = new State('SELECT'); - - $this->assertSame(6, $state->getBufferLength()); - $this->assertSame(6, $state->getStartLength()); - $this->assertSame(0, $state->getCursor()); - $this->assertSame('S', $state->getStart()); - $this->assertNull($state->getActiveToken()); - } - - public function testEmptyBuffer(): void - { - $state = new State(''); - - $this->assertSame(0, $state->getBufferLength()); - $this->assertNull($state->getStart()); - } - - public function testIncrementStart(): void - { - $state = new State('SELECT'); - $state->incrementStart(1); - - $this->assertSame(1, $state->getCursor()); - $this->assertSame('E', $state->getStart()); - } - - public function testNoSetEndMethod(): void - { - $state = new State('SELECT'); - /** @phpstan-ignore function.impossibleType */ - $this->assertFalse(method_exists($state, 'setEnd')); - } - - public function testSetActiveToken(): void - { - $state = new State('SELECT'); - $state->setActiveToken(Opcode::SELECT); - - $this->assertSame(Opcode::SELECT, $state->getActiveToken()); - } - - public function testSetCursor(): void - { - $state = new State('SELECT'); - $state->setCursor(3); - - $this->assertSame(3, $state->getCursor()); - $this->assertSame('E', $state->getStart()); - } -} diff --git a/tests/unit/Scanner/TokenTest.php b/tests/unit/Scanner/TokenTest.php index eba7a82..b719ac5 100644 --- a/tests/unit/Scanner/TokenTest.php +++ b/tests/unit/Scanner/TokenTest.php @@ -1,5 +1,14 @@ + * + * For the full copyright and license information, please view the LICENSE.txt + * file that was distributed with this source code. + */ + declare(strict_types=1); namespace Phalcon\Phql\Tests\Unit\Scanner; @@ -10,39 +19,24 @@ final class TokenTest extends AbstractUnitTestCase { - public function testConstructionWithAllValues(): void + public function testHoldsOpcodeAndValue(): void { - $token = new Token(Opcode::SELECT, null, 6); + $token = new Token(Opcode::IDENTIFIER->value, 'robots'); - $this->assertSame(Opcode::SELECT, $token->opcode); - $this->assertNull($token->value); - $this->assertSame(6, $token->length); + $this->assertSame([Opcode::IDENTIFIER->value, 'robots'], [$token->opcode, $token->value]); } - public function testConstructionWithValue(): void + /** + * EOF is Lemon's end-of-input token number; scanning errors use a code no + * PHQL token can have. + */ + public function testSentinelOpcodes(): void { - $token = new Token(Opcode::IDENTIFIER, 'Invoices', 8); - - $this->assertSame(Opcode::IDENTIFIER, $token->opcode); - $this->assertSame('Invoices', $token->value); - $this->assertSame(8, $token->length); + $this->assertSame([0, -2], [Token::EOF, Token::SCAN_ERROR]); } - public function testDefaultConstruction(): void + public function testValueDefaultsToNull(): void { - $token = new Token(); - - $this->assertNull($token->opcode); - $this->assertNull($token->value); - $this->assertSame(0, $token->length); - } - - public function testIsReadonly(): void - { - $token = new Token(Opcode::SELECT, null, 6); - - $this->expectException(\Error::class); - // @phpstan-ignore-next-line - $token->opcode = Opcode::FROM; + $this->assertNull((new Token(Opcode::COMMA->value))->value); } } diff --git a/tests/unit/TokensTest.php b/tests/unit/TokensTest.php new file mode 100644 index 0000000..ceea674 --- /dev/null +++ b/tests/unit/TokensTest.php @@ -0,0 +1,57 @@ + + * + * For the full copyright and license information, please view the LICENSE.txt + * file that was distributed with this source code. + */ + +declare(strict_types=1); + +namespace Phalcon\Phql\Tests\Unit; + +use Phalcon\Phql\Scanner\Opcode; +use Phalcon\Phql\Tests\AbstractUnitTestCase; +use Phalcon\Phql\Tokens; +use PHPUnit\Framework\Attributes\DataProvider; + +/** + * Token names come from cphalcon's base.c phql_tokens[] table; tokens it + * does not list are printed as UNKNOWN. + */ +final class TokensTest extends AbstractUnitTestCase +{ + /** + * @return array + */ + public static function nameProvider(): array + { + return [ + 'identifier' => [Opcode::IDENTIFIER->value, 'IDENTIFIER'], + 'hex integer' => [Opcode::HINTEGER->value, 'HEXAINTEGER'], + 'mod is escaped' => [Opcode::MOD->value, '%%'], + 'not equals' => [Opcode::NOTEQUALS->value, 'NOT EQUALS'], + 'numeric placeholder' => [Opcode::NPLACEHOLDER->value, 'NUMERIC PLACEHOLDER'], + 'string placeholder' => [Opcode::SPLACEHOLDER->value, 'STRING PLACEHOLDER'], + 'json path text' => [Opcode::OP_JSON_PATH_TEXT->value, '#>>'], + 'keyword' => [Opcode::WITH->value, 'WITH'], + 'bound placeholder' => [Opcode::BPLACEHOLDER->value, 'UNKNOWN'], + 'true' => [Opcode::TRUE->value, 'UNKNOWN'], + 'false' => [Opcode::FALSE->value, 'UNKNOWN'], + 'not between' => [Opcode::BETWEEN_NOT->value, 'UNKNOWN'], + 'bitwise not' => [Opcode::BITWISE_NOT->value, 'UNKNOWN'], + 'bitwise xor' => [Opcode::BITWISE_XOR->value, 'UNKNOWN'], + 'whitespace' => [Opcode::IGNORE->value, 'UNKNOWN'], + 'no token' => [0, 'UNKNOWN'], + ]; + } + + #[DataProvider('nameProvider')] + public function testName(int $opcode, string $name): void + { + $this->assertSame($name, Tokens::name($opcode)); + } +}