diff --git a/src/PHPSQLParser/processors/SelectExpressionProcessor.php b/src/PHPSQLParser/processors/SelectExpressionProcessor.php index f2023a51..dd998076 100644 --- a/src/PHPSQLParser/processors/SelectExpressionProcessor.php +++ b/src/PHPSQLParser/processors/SelectExpressionProcessor.php @@ -104,6 +104,13 @@ public function process($expression) { $base_expr .= $token; } + if ($alias) { + // remove quotation from the alias + $alias['no_quotes'] = $this->revokeQuotation($alias['name']); + $alias['name'] = trim($alias['name']); + $alias['base_expr'] = trim($alias['base_expr']); + } + $stripped = $this->processExpressionList($stripped); // TODO: the last part can also be a comment, don't use array_pop @@ -127,26 +134,17 @@ public function process($expression) { 'base_expr' => trim($last['base_expr'])); // remove the last token array_pop($tokens); - $base_expr = join("", $tokens); } } - if (!$alias) { - $base_expr = join("", $tokens); - } else { - /* remove escape from the alias */ - $alias['no_quotes'] = $this->revokeQuotation($alias['name']); - $alias['name'] = trim($alias['name']); - $alias['base_expr'] = trim($alias['base_expr']); - } - + $base_expr = $expression; + // TODO: this is always done with $stripped, how we do it twice? $processed = $this->processExpressionList($tokens); // if there is only one part, we copy the expr_type - // in all other cases we use "expression" as global type + // in all other cases we use "EXPRESSION" as global type $type = ExpressionType::EXPRESSION; - if (count($processed) === 1) { if (!$this->isSubQuery($processed[0])) { $type = $processed[0]['expr_type']; diff --git a/tests/expected/parser/alias3.serialized b/tests/expected/parser/alias3.serialized index 8e4b4d03..eab3a39c 100644 --- a/tests/expected/parser/alias3.serialized +++ b/tests/expected/parser/alias3.serialized @@ -1 +1 @@ -a:2:{s:6:"SELECT";a:1:{i:0;a:5:{s:9:"expr_type";s:10:"expression";s:5:"alias";a:4:{s:2:"as";b:0;s:4:"name";s:4:"colA";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:4:"colA";}}s:9:"base_expr";s:4:"colA";}s:9:"base_expr";s:30:"(select colA AS a from test t)";s:8:"sub_tree";a:1:{i:0;a:3:{s:9:"expr_type";s:8:"subquery";s:9:"base_expr";s:30:"(select colA AS a from test t)";s:8:"sub_tree";a:2:{s:6:"SELECT";a:1:{i:0;a:6:{s:9:"expr_type";s:6:"colref";s:5:"alias";a:4:{s:2:"as";b:1;s:4:"name";s:1:"a";s:9:"base_expr";s:4:"AS a";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"a";}}}s:9:"base_expr";s:4:"colA";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:4:"colA";}}s:8:"sub_tree";b:0;s:5:"delim";b:0;}}s:4:"FROM";a:1:{i:0;a:10:{s:9:"expr_type";s:5:"table";s:5:"table";s:4:"test";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:4:"test";}}s:5:"alias";a:4:{s:2:"as";b:0;s:4:"name";s:1:"t";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"t";}}s:9:"base_expr";s:1:"t";}s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:6:"test t";s:8:"sub_tree";b:0;}}}}}s:5:"delim";b:0;}}s:4:"FROM";a:1:{i:0;a:10:{s:9:"expr_type";s:5:"table";s:5:"table";s:7:"example";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:7:"example";}}s:5:"alias";a:4:{s:2:"as";b:1;s:4:"name";s:1:"b";s:9:"base_expr";s:4:"as b";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"b";}}}s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:12:"example as b";s:8:"sub_tree";b:0;}}} \ No newline at end of file +a:2:{s:6:"SELECT";a:1:{i:0;a:5:{s:9:"expr_type";s:10:"expression";s:5:"alias";a:4:{s:2:"as";b:0;s:4:"name";s:4:"colA";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:4:"colA";}}s:9:"base_expr";s:4:"colA";}s:9:"base_expr";s:35:"(select colA AS a from test t) colA";s:8:"sub_tree";a:1:{i:0;a:3:{s:9:"expr_type";s:8:"subquery";s:9:"base_expr";s:30:"(select colA AS a from test t)";s:8:"sub_tree";a:2:{s:6:"SELECT";a:1:{i:0;a:6:{s:9:"expr_type";s:6:"colref";s:5:"alias";a:4:{s:2:"as";b:1;s:4:"name";s:1:"a";s:9:"base_expr";s:4:"AS a";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"a";}}}s:9:"base_expr";s:4:"colA";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:4:"colA";}}s:8:"sub_tree";b:0;s:5:"delim";b:0;}}s:4:"FROM";a:1:{i:0;a:10:{s:9:"expr_type";s:5:"table";s:5:"table";s:4:"test";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:4:"test";}}s:5:"alias";a:4:{s:2:"as";b:0;s:4:"name";s:1:"t";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"t";}}s:9:"base_expr";s:1:"t";}s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:6:"test t";s:8:"sub_tree";b:0;}}}}}s:5:"delim";b:0;}}s:4:"FROM";a:1:{i:0;a:10:{s:9:"expr_type";s:5:"table";s:5:"table";s:7:"example";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:7:"example";}}s:5:"alias";a:4:{s:2:"as";b:1;s:4:"name";s:1:"b";s:9:"base_expr";s:4:"as b";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"b";}}}s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:12:"example as b";s:8:"sub_tree";b:0;}}} \ No newline at end of file diff --git a/tests/expected/parser/issue12.serialized b/tests/expected/parser/issue12.serialized index 2753ef07..3e9c7699 100644 --- a/tests/expected/parser/issue12.serialized +++ b/tests/expected/parser/issue12.serialized @@ -1 +1 @@ -a:5:{s:6:"SELECT";a:3:{i:0;a:6:{s:9:"expr_type";s:8:"reserved";s:5:"alias";b:0;s:9:"base_expr";s:19:"SQL_CALC_FOUND_ROWS";s:8:"sub_tree";b:0;s:5:"delim";s:1:" ";s:8:"position";i:7;}i:1;a:7:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:9:"SmTable.*";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:7:"SmTable";i:1;s:1:"*";}}s:8:"sub_tree";b:0;s:5:"delim";s:1:",";s:8:"position";i:27;}i:2;a:6:{s:9:"expr_type";s:10:"expression";s:5:"alias";a:5:{s:2:"as";b:1;s:4:"name";s:13:"keyword_score";s:9:"base_expr";s:16:"AS keyword_score";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:13:"keyword_score";}}s:8:"position";i:125;}s:9:"base_expr";s:86:"MATCH (SmTable.fulltextsearch_keyword) AGAINST ('google googles' WITH QUERY EXPANSION)";s:8:"sub_tree";a:3:{i:0;a:4:{s:9:"expr_type";s:8:"function";s:9:"base_expr";s:5:"MATCH";s:8:"sub_tree";a:1:{i:0;a:5:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:30:"SmTable.fulltextsearch_keyword";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:7:"SmTable";i:1;s:22:"fulltextsearch_keyword";}}s:8:"sub_tree";b:0;s:8:"position";i:45;}}s:8:"position";i:38;}i:1;a:5:{s:9:"expr_type";s:8:"function";s:9:"base_expr";s:7:"AGAINST";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:7:"AGAINST";}}s:8:"sub_tree";b:0;s:8:"position";i:77;}i:2;a:4:{s:9:"expr_type";s:15:"match-arguments";s:9:"base_expr";s:39:"('google googles' WITH QUERY EXPANSION)";s:8:"sub_tree";a:2:{i:0;a:4:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:16:"'google googles'";s:8:"sub_tree";b:0;s:8:"position";i:86;}i:1;a:4:{s:9:"expr_type";s:10:"match-mode";s:9:"base_expr";s:20:"WITH QUERY EXPANSION";s:8:"sub_tree";b:0;s:8:"position";i:103;}}s:8:"position";i:85;}}s:5:"delim";b:0;s:8:"position";i:38;}}s:4:"FROM";a:1:{i:0;a:11:{s:9:"expr_type";s:5:"table";s:5:"table";s:7:"SmTable";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:7:"SmTable";}}s:5:"alias";b:0;s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:7:"SmTable";s:8:"sub_tree";b:0;s:8:"position";i:147;}}s:5:"WHERE";a:9:{i:0;a:5:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:14:"SmTable.status";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:7:"SmTable";i:1;s:6:"status";}}s:8:"sub_tree";b:0;s:8:"position";i:161;}i:1;a:4:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";s:8:"sub_tree";b:0;s:8:"position";i:176;}i:2;a:4:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:3:"'A'";s:8:"sub_tree";b:0;s:8:"position";i:178;}i:3;a:4:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:3:"AND";s:8:"sub_tree";b:0;s:8:"position";i:182;}i:4;a:4:{s:9:"expr_type";s:18:"bracket_expression";s:9:"base_expr";s:50:"(SmTable.country_id = 1 AND SmTable.state_id = 10)";s:8:"sub_tree";a:7:{i:0;a:5:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:18:"SmTable.country_id";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:7:"SmTable";i:1;s:10:"country_id";}}s:8:"sub_tree";b:0;s:8:"position";i:187;}i:1;a:4:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";s:8:"sub_tree";b:0;s:8:"position";i:206;}i:2;a:4:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:1:"1";s:8:"sub_tree";b:0;s:8:"position";i:208;}i:3;a:4:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:3:"AND";s:8:"sub_tree";b:0;s:8:"position";i:210;}i:4;a:5:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:16:"SmTable.state_id";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:7:"SmTable";i:1;s:8:"state_id";}}s:8:"sub_tree";b:0;s:8:"position";i:214;}i:5;a:4:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";s:8:"sub_tree";b:0;s:8:"position";i:231;}i:6;a:4:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:2:"10";s:8:"sub_tree";b:0;s:8:"position";i:233;}}s:8:"position";i:186;}i:5;a:4:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:3:"AND";s:8:"sub_tree";b:0;s:8:"position";i:237;}i:6;a:4:{s:9:"expr_type";s:8:"function";s:9:"base_expr";s:5:"MATCH";s:8:"sub_tree";a:1:{i:0;a:5:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:30:"SmTable.fulltextsearch_keyword";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:7:"SmTable";i:1;s:22:"fulltextsearch_keyword";}}s:8:"sub_tree";b:0;s:8:"position";i:248;}}s:8:"position";i:241;}i:7;a:5:{s:9:"expr_type";s:8:"function";s:9:"base_expr";s:7:"AGAINST";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:7:"AGAINST";}}s:8:"sub_tree";b:0;s:8:"position";i:280;}i:8;a:4:{s:9:"expr_type";s:15:"match-arguments";s:9:"base_expr";s:18:"('google googles')";s:8:"sub_tree";a:1:{i:0;a:4:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:16:"'google googles'";s:8:"sub_tree";b:0;s:8:"position";i:289;}}s:8:"position";i:288;}}s:5:"ORDER";a:2:{i:0;a:6:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:13:"SmTable.level";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:7:"SmTable";i:1;s:5:"level";}}s:8:"sub_tree";b:0;s:9:"direction";s:4:"DESC";s:8:"position";i:316;}i:1;a:5:{s:9:"expr_type";s:5:"alias";s:9:"base_expr";s:13:"keyword_score";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:13:"keyword_score";}}s:9:"direction";s:4:"DESC";s:8:"position";i:336;}}s:5:"LIMIT";a:2:{s:6:"offset";s:1:"0";s:8:"rowcount";s:2:"10";}} \ No newline at end of file +a:5:{s:6:"SELECT";a:3:{i:0;a:6:{s:9:"expr_type";s:8:"reserved";s:5:"alias";b:0;s:9:"base_expr";s:19:"SQL_CALC_FOUND_ROWS";s:8:"sub_tree";b:0;s:5:"delim";s:1:" ";s:8:"position";i:7;}i:1;a:7:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:9:"SmTable.*";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:7:"SmTable";i:1;s:1:"*";}}s:8:"sub_tree";b:0;s:5:"delim";s:1:",";s:8:"position";i:27;}i:2;a:6:{s:9:"expr_type";s:10:"expression";s:5:"alias";a:5:{s:2:"as";b:1;s:4:"name";s:13:"keyword_score";s:9:"base_expr";s:16:"AS keyword_score";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:13:"keyword_score";}}s:8:"position";i:125;}s:9:"base_expr";s:103:"MATCH (SmTable.fulltextsearch_keyword) AGAINST ('google googles' WITH QUERY EXPANSION) AS keyword_score";s:8:"sub_tree";a:3:{i:0;a:4:{s:9:"expr_type";s:8:"function";s:9:"base_expr";s:5:"MATCH";s:8:"sub_tree";a:1:{i:0;a:5:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:30:"SmTable.fulltextsearch_keyword";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:7:"SmTable";i:1;s:22:"fulltextsearch_keyword";}}s:8:"sub_tree";b:0;s:8:"position";i:45;}}s:8:"position";i:38;}i:1;a:5:{s:9:"expr_type";s:8:"function";s:9:"base_expr";s:7:"AGAINST";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:7:"AGAINST";}}s:8:"sub_tree";b:0;s:8:"position";i:77;}i:2;a:4:{s:9:"expr_type";s:15:"match-arguments";s:9:"base_expr";s:39:"('google googles' WITH QUERY EXPANSION)";s:8:"sub_tree";a:2:{i:0;a:4:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:16:"'google googles'";s:8:"sub_tree";b:0;s:8:"position";i:86;}i:1;a:4:{s:9:"expr_type";s:10:"match-mode";s:9:"base_expr";s:20:"WITH QUERY EXPANSION";s:8:"sub_tree";b:0;s:8:"position";i:103;}}s:8:"position";i:85;}}s:5:"delim";b:0;s:8:"position";i:38;}}s:4:"FROM";a:1:{i:0;a:11:{s:9:"expr_type";s:5:"table";s:5:"table";s:7:"SmTable";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:7:"SmTable";}}s:5:"alias";b:0;s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:7:"SmTable";s:8:"sub_tree";b:0;s:8:"position";i:147;}}s:5:"WHERE";a:9:{i:0;a:5:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:14:"SmTable.status";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:7:"SmTable";i:1;s:6:"status";}}s:8:"sub_tree";b:0;s:8:"position";i:161;}i:1;a:4:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";s:8:"sub_tree";b:0;s:8:"position";i:176;}i:2;a:4:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:3:"'A'";s:8:"sub_tree";b:0;s:8:"position";i:178;}i:3;a:4:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:3:"AND";s:8:"sub_tree";b:0;s:8:"position";i:182;}i:4;a:4:{s:9:"expr_type";s:18:"bracket_expression";s:9:"base_expr";s:50:"(SmTable.country_id = 1 AND SmTable.state_id = 10)";s:8:"sub_tree";a:7:{i:0;a:5:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:18:"SmTable.country_id";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:7:"SmTable";i:1;s:10:"country_id";}}s:8:"sub_tree";b:0;s:8:"position";i:187;}i:1;a:4:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";s:8:"sub_tree";b:0;s:8:"position";i:206;}i:2;a:4:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:1:"1";s:8:"sub_tree";b:0;s:8:"position";i:208;}i:3;a:4:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:3:"AND";s:8:"sub_tree";b:0;s:8:"position";i:210;}i:4;a:5:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:16:"SmTable.state_id";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:7:"SmTable";i:1;s:8:"state_id";}}s:8:"sub_tree";b:0;s:8:"position";i:214;}i:5;a:4:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";s:8:"sub_tree";b:0;s:8:"position";i:231;}i:6;a:4:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:2:"10";s:8:"sub_tree";b:0;s:8:"position";i:233;}}s:8:"position";i:186;}i:5;a:4:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:3:"AND";s:8:"sub_tree";b:0;s:8:"position";i:237;}i:6;a:4:{s:9:"expr_type";s:8:"function";s:9:"base_expr";s:5:"MATCH";s:8:"sub_tree";a:1:{i:0;a:5:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:30:"SmTable.fulltextsearch_keyword";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:7:"SmTable";i:1;s:22:"fulltextsearch_keyword";}}s:8:"sub_tree";b:0;s:8:"position";i:248;}}s:8:"position";i:241;}i:7;a:5:{s:9:"expr_type";s:8:"function";s:9:"base_expr";s:7:"AGAINST";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:7:"AGAINST";}}s:8:"sub_tree";b:0;s:8:"position";i:280;}i:8;a:4:{s:9:"expr_type";s:15:"match-arguments";s:9:"base_expr";s:18:"('google googles')";s:8:"sub_tree";a:1:{i:0;a:4:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:16:"'google googles'";s:8:"sub_tree";b:0;s:8:"position";i:289;}}s:8:"position";i:288;}}s:5:"ORDER";a:2:{i:0;a:6:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:13:"SmTable.level";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:7:"SmTable";i:1;s:5:"level";}}s:8:"sub_tree";b:0;s:9:"direction";s:4:"DESC";s:8:"position";i:316;}i:1;a:5:{s:9:"expr_type";s:5:"alias";s:9:"base_expr";s:13:"keyword_score";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:13:"keyword_score";}}s:9:"direction";s:4:"DESC";s:8:"position";i:336;}}s:5:"LIMIT";a:2:{s:6:"offset";s:1:"0";s:8:"rowcount";s:2:"10";}} \ No newline at end of file diff --git a/tests/expected/parser/issue15.serialized b/tests/expected/parser/issue15.serialized index 0347da23..787afa49 100644 --- a/tests/expected/parser/issue15.serialized +++ b/tests/expected/parser/issue15.serialized @@ -1 +1 @@ -a:4:{s:6:"SELECT";a:5:{i:0;a:6:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:6:"usr_id";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:6:"usr_id";}}s:8:"sub_tree";b:0;s:5:"delim";s:1:",";}i:1;a:6:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:9:"usr_login";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:9:"usr_login";}}s:8:"sub_tree";b:0;s:5:"delim";s:1:",";}i:2;a:5:{s:9:"expr_type";s:10:"expression";s:5:"alias";a:4:{s:2:"as";b:0;s:4:"name";s:11:"tipousuario";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:11:"tipousuario";}}s:9:"base_expr";s:11:"tipousuario";}s:9:"base_expr";s:179:"case id_tipousuario when 1 then 'Usuario CVE' when 2 then concat('Usuario Vendedor -', codigovendedor, '-') when 3 then concat('Usuario Vendedor Meson (', codigovendedor, ')') end";s:8:"sub_tree";a:15:{i:0;a:3:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:4:"case";s:8:"sub_tree";b:0;}i:1;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:14:"id_tipousuario";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:14:"id_tipousuario";}}s:8:"sub_tree";b:0;}i:2;a:3:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:4:"when";s:8:"sub_tree";b:0;}i:3;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:1:"1";s:8:"sub_tree";b:0;}i:4;a:3:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:4:"then";s:8:"sub_tree";b:0;}i:5;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:13:"'Usuario CVE'";s:8:"sub_tree";b:0;}i:6;a:3:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:4:"when";s:8:"sub_tree";b:0;}i:7;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:1:"2";s:8:"sub_tree";b:0;}i:8;a:3:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:4:"then";s:8:"sub_tree";b:0;}i:9;a:3:{s:9:"expr_type";s:8:"function";s:9:"base_expr";s:6:"concat";s:8:"sub_tree";a:3:{i:0;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:20:"'Usuario Vendedor -'";s:8:"sub_tree";b:0;}i:1;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:14:"codigovendedor";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:14:"codigovendedor";}}s:8:"sub_tree";b:0;}i:2;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:3:"'-'";s:8:"sub_tree";b:0;}}}i:10;a:3:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:4:"when";s:8:"sub_tree";b:0;}i:11;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:1:"3";s:8:"sub_tree";b:0;}i:12;a:3:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:4:"then";s:8:"sub_tree";b:0;}i:13;a:3:{s:9:"expr_type";s:8:"function";s:9:"base_expr";s:6:"concat";s:8:"sub_tree";a:3:{i:0;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:26:"'Usuario Vendedor Meson ('";s:8:"sub_tree";b:0;}i:1;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:14:"codigovendedor";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:14:"codigovendedor";}}s:8:"sub_tree";b:0;}i:2;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:3:"')'";s:8:"sub_tree";b:0;}}}i:14;a:3:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:3:"end";s:8:"sub_tree";b:0;}}s:5:"delim";s:1:",";}i:3;a:5:{s:9:"expr_type";s:8:"function";s:5:"alias";a:4:{s:2:"as";b:1;s:4:"name";s:7:"nom_com";s:9:"base_expr";s:10:"as nom_com";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:7:"nom_com";}}}s:9:"base_expr";s:6:"CONCAT";s:8:"sub_tree";a:3:{i:0;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:11:"usr_nombres";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:11:"usr_nombres";}}s:8:"sub_tree";b:0;}i:1;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:3:"' '";s:8:"sub_tree";b:0;}i:2;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:13:"usr_apellidos";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:13:"usr_apellidos";}}s:8:"sub_tree";b:0;}}s:5:"delim";s:1:",";}i:4;a:6:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:9:"cod_local";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:9:"cod_local";}}s:8:"sub_tree";b:0;s:5:"delim";b:0;}}s:4:"FROM";a:1:{i:0;a:10:{s:9:"expr_type";s:5:"table";s:5:"table";s:8:"usuarios";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:8:"usuarios";}}s:5:"alias";b:0;s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:8:"usuarios";s:8:"sub_tree";b:0;}}s:5:"WHERE";a:3:{i:0;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:10:"usr_estado";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:10:"usr_estado";}}s:8:"sub_tree";b:0;}i:1;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:2:"<>";s:8:"sub_tree";b:0;}i:2;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:1:"2";s:8:"sub_tree";b:0;}}s:5:"ORDER";a:3:{i:0;a:3:{s:9:"expr_type";s:3:"pos";s:9:"base_expr";s:1:"3";s:9:"direction";s:3:"ASC";}i:1;a:3:{s:9:"expr_type";s:3:"pos";s:9:"base_expr";s:1:"1";s:9:"direction";s:3:"ASC";}i:2;a:3:{s:9:"expr_type";s:3:"pos";s:9:"base_expr";s:1:"4";s:9:"direction";s:3:"ASC";}}} \ No newline at end of file +a:4:{s:6:"SELECT";a:5:{i:0;a:6:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:6:"usr_id";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:6:"usr_id";}}s:8:"sub_tree";b:0;s:5:"delim";s:1:",";}i:1;a:6:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:9:"usr_login";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:9:"usr_login";}}s:8:"sub_tree";b:0;s:5:"delim";s:1:",";}i:2;a:5:{s:9:"expr_type";s:10:"expression";s:5:"alias";a:4:{s:2:"as";b:0;s:4:"name";s:11:"tipousuario";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:11:"tipousuario";}}s:9:"base_expr";s:11:"tipousuario";}s:9:"base_expr";s:191:"case id_tipousuario when 1 then 'Usuario CVE' when 2 then concat('Usuario Vendedor -', codigovendedor, '-') when 3 then concat('Usuario Vendedor Meson (', codigovendedor, ')') end tipousuario";s:8:"sub_tree";a:15:{i:0;a:3:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:4:"case";s:8:"sub_tree";b:0;}i:1;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:14:"id_tipousuario";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:14:"id_tipousuario";}}s:8:"sub_tree";b:0;}i:2;a:3:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:4:"when";s:8:"sub_tree";b:0;}i:3;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:1:"1";s:8:"sub_tree";b:0;}i:4;a:3:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:4:"then";s:8:"sub_tree";b:0;}i:5;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:13:"'Usuario CVE'";s:8:"sub_tree";b:0;}i:6;a:3:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:4:"when";s:8:"sub_tree";b:0;}i:7;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:1:"2";s:8:"sub_tree";b:0;}i:8;a:3:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:4:"then";s:8:"sub_tree";b:0;}i:9;a:3:{s:9:"expr_type";s:8:"function";s:9:"base_expr";s:6:"concat";s:8:"sub_tree";a:3:{i:0;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:20:"'Usuario Vendedor -'";s:8:"sub_tree";b:0;}i:1;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:14:"codigovendedor";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:14:"codigovendedor";}}s:8:"sub_tree";b:0;}i:2;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:3:"'-'";s:8:"sub_tree";b:0;}}}i:10;a:3:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:4:"when";s:8:"sub_tree";b:0;}i:11;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:1:"3";s:8:"sub_tree";b:0;}i:12;a:3:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:4:"then";s:8:"sub_tree";b:0;}i:13;a:3:{s:9:"expr_type";s:8:"function";s:9:"base_expr";s:6:"concat";s:8:"sub_tree";a:3:{i:0;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:26:"'Usuario Vendedor Meson ('";s:8:"sub_tree";b:0;}i:1;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:14:"codigovendedor";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:14:"codigovendedor";}}s:8:"sub_tree";b:0;}i:2;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:3:"')'";s:8:"sub_tree";b:0;}}}i:14;a:3:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:3:"end";s:8:"sub_tree";b:0;}}s:5:"delim";s:1:",";}i:3;a:5:{s:9:"expr_type";s:8:"function";s:5:"alias";a:4:{s:2:"as";b:1;s:4:"name";s:7:"nom_com";s:9:"base_expr";s:10:"as nom_com";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:7:"nom_com";}}}s:9:"base_expr";s:6:"CONCAT";s:8:"sub_tree";a:3:{i:0;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:11:"usr_nombres";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:11:"usr_nombres";}}s:8:"sub_tree";b:0;}i:1;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:3:"' '";s:8:"sub_tree";b:0;}i:2;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:13:"usr_apellidos";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:13:"usr_apellidos";}}s:8:"sub_tree";b:0;}}s:5:"delim";s:1:",";}i:4;a:6:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:9:"cod_local";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:9:"cod_local";}}s:8:"sub_tree";b:0;s:5:"delim";b:0;}}s:4:"FROM";a:1:{i:0;a:10:{s:9:"expr_type";s:5:"table";s:5:"table";s:8:"usuarios";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:8:"usuarios";}}s:5:"alias";b:0;s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:8:"usuarios";s:8:"sub_tree";b:0;}}s:5:"WHERE";a:3:{i:0;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:10:"usr_estado";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:10:"usr_estado";}}s:8:"sub_tree";b:0;}i:1;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:2:"<>";s:8:"sub_tree";b:0;}i:2;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:1:"2";s:8:"sub_tree";b:0;}}s:5:"ORDER";a:3:{i:0;a:3:{s:9:"expr_type";s:3:"pos";s:9:"base_expr";s:1:"3";s:9:"direction";s:3:"ASC";}i:1;a:3:{s:9:"expr_type";s:3:"pos";s:9:"base_expr";s:1:"1";s:9:"direction";s:3:"ASC";}i:2;a:3:{s:9:"expr_type";s:3:"pos";s:9:"base_expr";s:1:"4";s:9:"direction";s:3:"ASC";}}} \ No newline at end of file diff --git a/tests/expected/parser/issue31.serialized b/tests/expected/parser/issue31.serialized index 578a0548..7935b7df 100644 --- a/tests/expected/parser/issue31.serialized +++ b/tests/expected/parser/issue31.serialized @@ -1,11 +1,11 @@ -a:5:{s:6:"SELECT";a:12:{i:0;a:6:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:8:"sp.level";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:2:"sp";i:1;s:5:"level";}}s:8:"sub_tree";b:0;s:5:"delim";s:1:",";}i:1;a:5:{s:9:"expr_type";s:10:"expression";s:5:"alias";a:4:{s:2:"as";b:1;s:4:"name";s:8:"levelnum";s:9:"base_expr";s:11:"AS levelnum";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:8:"levelnum";}}}s:9:"base_expr";s:100:"CASE sp.level +a:5:{s:6:"SELECT";a:12:{i:0;a:6:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:8:"sp.level";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:2:"sp";i:1;s:5:"level";}}s:8:"sub_tree";b:0;s:5:"delim";s:1:",";}i:1;a:5:{s:9:"expr_type";s:10:"expression";s:5:"alias";a:4:{s:2:"as";b:1;s:4:"name";s:8:"levelnum";s:9:"base_expr";s:11:"AS levelnum";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:8:"levelnum";}}}s:9:"base_expr";s:112:"CASE sp.level WHEN 'bronze' THEN 0 WHEN 'silver' THEN 1 WHEN 'gold' THEN 2 ELSE -1 - END";s:8:"sub_tree";a:17:{i:0;a:3:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:4:"CASE";s:8:"sub_tree";b:0;}i:1;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:8:"sp.level";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:2:"sp";i:1;s:5:"level";}}s:8:"sub_tree";b:0;}i:2;a:3:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:4:"WHEN";s:8:"sub_tree";b:0;}i:3;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:8:"'bronze'";s:8:"sub_tree";b:0;}i:4;a:3:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:4:"THEN";s:8:"sub_tree";b:0;}i:5;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:1:"0";s:8:"sub_tree";b:0;}i:6;a:3:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:4:"WHEN";s:8:"sub_tree";b:0;}i:7;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:8:"'silver'";s:8:"sub_tree";b:0;}i:8;a:3:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:4:"THEN";s:8:"sub_tree";b:0;}i:9;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:1:"1";s:8:"sub_tree";b:0;}i:10;a:3:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:4:"WHEN";s:8:"sub_tree";b:0;}i:11;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:6:"'gold'";s:8:"sub_tree";b:0;}i:12;a:3:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:4:"THEN";s:8:"sub_tree";b:0;}i:13;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:1:"2";s:8:"sub_tree";b:0;}i:14;a:3:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:4:"ELSE";s:8:"sub_tree";b:0;}i:15;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:2:"-1";s:8:"sub_tree";b:0;}i:16;a:3:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:3:"END";s:8:"sub_tree";b:0;}}s:5:"delim";s:1:",";}i:2;a:6:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:9:"sp.alt_en";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:2:"sp";i:1;s:6:"alt_en";}}s:8:"sub_tree";b:0;s:5:"delim";s:1:",";}i:3;a:6:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:9:"sp.alt_pl";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:2:"sp";i:1;s:6:"alt_pl";}}s:8:"sub_tree";b:0;s:5:"delim";s:1:",";}i:4;a:5:{s:9:"expr_type";s:8:"function";s:5:"alias";a:4:{s:2:"as";b:1;s:4:"name";s:8:"vu_start";s:9:"base_expr";s:11:"AS vu_start";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:8:"vu_start";}}}s:9:"base_expr";s:11:"DATE_FORMAT";s:8:"sub_tree";a:2:{i:0;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:11:"sp.vu_start";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:2:"sp";i:1;s:8:"vu_start";}}s:8:"sub_tree";b:0;}i:1;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:13:"'%Y-%m-%d %T'";s:8:"sub_tree";b:0;}}s:5:"delim";s:1:",";}i:5;a:5:{s:9:"expr_type";s:8:"function";s:5:"alias";a:4:{s:2:"as";b:1;s:4:"name";s:7:"vu_stop";s:9:"base_expr";s:10:"AS vu_stop";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:7:"vu_stop";}}}s:9:"base_expr";s:11:"DATE_FORMAT";s:8:"sub_tree";a:2:{i:0;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:10:"sp.vu_stop";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:2:"sp";i:1;s:7:"vu_stop";}}s:8:"sub_tree";b:0;}i:1;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:13:"'%Y-%m-%d %T'";s:8:"sub_tree";b:0;}}s:5:"delim";s:1:",";}i:6;a:5:{s:9:"expr_type";s:8:"function";s:5:"alias";a:4:{s:2:"as";b:1;s:4:"name";s:6:"frdays";s:9:"base_expr";s:9:"AS frdays";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:6:"frdays";}}}s:9:"base_expr";s:3:"ABS";s:8:"sub_tree";a:1:{i:0;a:4:{s:9:"expr_type";s:10:"expression";s:9:"base_expr";s:37:"TO_DAYS(now()) - TO_DAYS(sp.vu_start)";s:8:"sub_tree";a:3:{i:0;a:3:{s:9:"expr_type";s:8:"function";s:9:"base_expr";s:7:"TO_DAYS";s:8:"sub_tree";a:1:{i:0;a:3:{s:9:"expr_type";s:8:"function";s:9:"base_expr";s:3:"now";s:8:"sub_tree";a:0:{}}}}i:1;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"-";s:8:"sub_tree";b:0;}i:2;a:3:{s:9:"expr_type";s:8:"function";s:9:"base_expr";s:7:"TO_DAYS";s:8:"sub_tree";a:1:{i:0;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:11:"sp.vu_start";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:2:"sp";i:1;s:8:"vu_start";}}s:8:"sub_tree";b:0;}}}}s:5:"alias";b:0;}}s:5:"delim";s:1:",";}i:7;a:5:{s:9:"expr_type";s:8:"function";s:5:"alias";a:4:{s:2:"as";b:1;s:4:"name";s:6:"todays";s:9:"base_expr";s:9:"AS todays";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:6:"todays";}}}s:9:"base_expr";s:3:"ABS";s:8:"sub_tree";a:1:{i:0;a:4:{s:9:"expr_type";s:10:"expression";s:9:"base_expr";s:36:"TO_DAYS(now()) - TO_DAYS(sp.vu_stop)";s:8:"sub_tree";a:3:{i:0;a:3:{s:9:"expr_type";s:8:"function";s:9:"base_expr";s:7:"TO_DAYS";s:8:"sub_tree";a:1:{i:0;a:3:{s:9:"expr_type";s:8:"function";s:9:"base_expr";s:3:"now";s:8:"sub_tree";a:0:{}}}}i:1;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"-";s:8:"sub_tree";b:0;}i:2;a:3:{s:9:"expr_type";s:8:"function";s:9:"base_expr";s:7:"TO_DAYS";s:8:"sub_tree";a:1:{i:0;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:10:"sp.vu_stop";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:2:"sp";i:1;s:7:"vu_stop";}}s:8:"sub_tree";b:0;}}}}s:5:"alias";b:0;}}s:5:"delim";s:1:",";}i:8;a:5:{s:9:"expr_type";s:8:"function";s:5:"alias";a:4:{s:2:"as";b:1;s:4:"name";s:6:"status";s:9:"base_expr";s:9:"AS status";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:6:"status";}}}s:9:"base_expr";s:2:"IF";s:8:"sub_tree";a:3:{i:0;a:4:{s:9:"expr_type";s:10:"expression";s:9:"base_expr";s:63:"ISNULL(TO_DAYS(sp.vu_start)) OR ISNULL(TO_DAYS(sp.vu_stop)) + END AS levelnum";s:8:"sub_tree";a:17:{i:0;a:3:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:4:"CASE";s:8:"sub_tree";b:0;}i:1;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:8:"sp.level";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:2:"sp";i:1;s:5:"level";}}s:8:"sub_tree";b:0;}i:2;a:3:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:4:"WHEN";s:8:"sub_tree";b:0;}i:3;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:8:"'bronze'";s:8:"sub_tree";b:0;}i:4;a:3:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:4:"THEN";s:8:"sub_tree";b:0;}i:5;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:1:"0";s:8:"sub_tree";b:0;}i:6;a:3:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:4:"WHEN";s:8:"sub_tree";b:0;}i:7;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:8:"'silver'";s:8:"sub_tree";b:0;}i:8;a:3:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:4:"THEN";s:8:"sub_tree";b:0;}i:9;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:1:"1";s:8:"sub_tree";b:0;}i:10;a:3:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:4:"WHEN";s:8:"sub_tree";b:0;}i:11;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:6:"'gold'";s:8:"sub_tree";b:0;}i:12;a:3:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:4:"THEN";s:8:"sub_tree";b:0;}i:13;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:1:"2";s:8:"sub_tree";b:0;}i:14;a:3:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:4:"ELSE";s:8:"sub_tree";b:0;}i:15;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:2:"-1";s:8:"sub_tree";b:0;}i:16;a:3:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:3:"END";s:8:"sub_tree";b:0;}}s:5:"delim";s:1:",";}i:2;a:6:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:9:"sp.alt_en";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:2:"sp";i:1;s:6:"alt_en";}}s:8:"sub_tree";b:0;s:5:"delim";s:1:",";}i:3;a:6:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:9:"sp.alt_pl";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:2:"sp";i:1;s:6:"alt_pl";}}s:8:"sub_tree";b:0;s:5:"delim";s:1:",";}i:4;a:5:{s:9:"expr_type";s:8:"function";s:5:"alias";a:4:{s:2:"as";b:1;s:4:"name";s:8:"vu_start";s:9:"base_expr";s:11:"AS vu_start";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:8:"vu_start";}}}s:9:"base_expr";s:11:"DATE_FORMAT";s:8:"sub_tree";a:2:{i:0;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:11:"sp.vu_start";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:2:"sp";i:1;s:8:"vu_start";}}s:8:"sub_tree";b:0;}i:1;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:13:"'%Y-%m-%d %T'";s:8:"sub_tree";b:0;}}s:5:"delim";s:1:",";}i:5;a:5:{s:9:"expr_type";s:8:"function";s:5:"alias";a:4:{s:2:"as";b:1;s:4:"name";s:7:"vu_stop";s:9:"base_expr";s:10:"AS vu_stop";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:7:"vu_stop";}}}s:9:"base_expr";s:11:"DATE_FORMAT";s:8:"sub_tree";a:2:{i:0;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:10:"sp.vu_stop";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:2:"sp";i:1;s:7:"vu_stop";}}s:8:"sub_tree";b:0;}i:1;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:13:"'%Y-%m-%d %T'";s:8:"sub_tree";b:0;}}s:5:"delim";s:1:",";}i:6;a:5:{s:9:"expr_type";s:8:"function";s:5:"alias";a:4:{s:2:"as";b:1;s:4:"name";s:6:"frdays";s:9:"base_expr";s:9:"AS frdays";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:6:"frdays";}}}s:9:"base_expr";s:3:"ABS";s:8:"sub_tree";a:1:{i:0;a:4:{s:9:"expr_type";s:10:"expression";s:9:"base_expr";s:37:"TO_DAYS(now()) - TO_DAYS(sp.vu_start)";s:8:"sub_tree";a:3:{i:0;a:3:{s:9:"expr_type";s:8:"function";s:9:"base_expr";s:7:"TO_DAYS";s:8:"sub_tree";a:1:{i:0;a:3:{s:9:"expr_type";s:8:"function";s:9:"base_expr";s:3:"now";s:8:"sub_tree";b:0;}}}i:1;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"-";s:8:"sub_tree";b:0;}i:2;a:3:{s:9:"expr_type";s:8:"function";s:9:"base_expr";s:7:"TO_DAYS";s:8:"sub_tree";a:1:{i:0;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:11:"sp.vu_start";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:2:"sp";i:1;s:8:"vu_start";}}s:8:"sub_tree";b:0;}}}}s:5:"alias";b:0;}}s:5:"delim";s:1:",";}i:7;a:5:{s:9:"expr_type";s:8:"function";s:5:"alias";a:4:{s:2:"as";b:1;s:4:"name";s:6:"todays";s:9:"base_expr";s:9:"AS todays";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:6:"todays";}}}s:9:"base_expr";s:3:"ABS";s:8:"sub_tree";a:1:{i:0;a:4:{s:9:"expr_type";s:10:"expression";s:9:"base_expr";s:36:"TO_DAYS(now()) - TO_DAYS(sp.vu_stop)";s:8:"sub_tree";a:3:{i:0;a:3:{s:9:"expr_type";s:8:"function";s:9:"base_expr";s:7:"TO_DAYS";s:8:"sub_tree";a:1:{i:0;a:3:{s:9:"expr_type";s:8:"function";s:9:"base_expr";s:3:"now";s:8:"sub_tree";b:0;}}}i:1;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"-";s:8:"sub_tree";b:0;}i:2;a:3:{s:9:"expr_type";s:8:"function";s:9:"base_expr";s:7:"TO_DAYS";s:8:"sub_tree";a:1:{i:0;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:10:"sp.vu_stop";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:2:"sp";i:1;s:7:"vu_stop";}}s:8:"sub_tree";b:0;}}}}s:5:"alias";b:0;}}s:5:"delim";s:1:",";}i:8;a:5:{s:9:"expr_type";s:8:"function";s:5:"alias";a:4:{s:2:"as";b:1;s:4:"name";s:6:"status";s:9:"base_expr";s:9:"AS status";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:6:"status";}}}s:9:"base_expr";s:2:"IF";s:8:"sub_tree";a:3:{i:0;a:4:{s:9:"expr_type";s:10:"expression";s:9:"base_expr";s:63:"ISNULL(TO_DAYS(sp.vu_start)) OR ISNULL(TO_DAYS(sp.vu_stop)) ";s:8:"sub_tree";a:3:{i:0;a:3:{s:9:"expr_type";s:8:"function";s:9:"base_expr";s:6:"ISNULL";s:8:"sub_tree";a:1:{i:0;a:3:{s:9:"expr_type";s:8:"function";s:9:"base_expr";s:7:"TO_DAYS";s:8:"sub_tree";a:1:{i:0;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:11:"sp.vu_start";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:2:"sp";i:1;s:8:"vu_start";}}s:8:"sub_tree";b:0;}}}}}i:1;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:2:"OR";s:8:"sub_tree";b:0;}i:2;a:3:{s:9:"expr_type";s:8:"function";s:9:"base_expr";s:6:"ISNULL";s:8:"sub_tree";a:1:{i:0;a:3:{s:9:"expr_type";s:8:"function";s:9:"base_expr";s:7:"TO_DAYS";s:8:"sub_tree";a:1:{i:0;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:10:"sp.vu_stop";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:2:"sp";i:1;s:7:"vu_stop";}}s:8:"sub_tree";b:0;}}}}}}s:5:"alias";b:0;}i:1;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:1:"1";s:8:"sub_tree";b:0;}i:2;a:3:{s:9:"expr_type";s:8:"function";s:9:"base_expr";s:2:"IF";s:8:"sub_tree";a:3:{i:0;a:4:{s:9:"expr_type";s:10:"expression";s:9:"base_expr";s:42:"TO_DAYS(now()) < TO_DAYS(sp.vu_start) - ";s:8:"sub_tree";a:3:{i:0;a:3:{s:9:"expr_type";s:8:"function";s:9:"base_expr";s:7:"TO_DAYS";s:8:"sub_tree";a:1:{i:0;a:3:{s:9:"expr_type";s:8:"function";s:9:"base_expr";s:3:"now";s:8:"sub_tree";a:0:{}}}}i:1;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"<";s:8:"sub_tree";b:0;}i:2;a:3:{s:9:"expr_type";s:8:"function";s:9:"base_expr";s:7:"TO_DAYS";s:8:"sub_tree";a:1:{i:0;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:11:"sp.vu_start";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:2:"sp";i:1;s:8:"vu_start";}}s:8:"sub_tree";b:0;}}}}s:5:"alias";b:0;}i:1;a:4:{s:9:"expr_type";s:10:"expression";s:9:"base_expr";s:43:" TO_DAYS(now()) - TO_DAYS(sp.vu_start) - ";s:8:"sub_tree";a:3:{i:0;a:3:{s:9:"expr_type";s:8:"function";s:9:"base_expr";s:7:"TO_DAYS";s:8:"sub_tree";a:1:{i:0;a:3:{s:9:"expr_type";s:8:"function";s:9:"base_expr";s:3:"now";s:8:"sub_tree";a:0:{}}}}i:1;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"-";s:8:"sub_tree";b:0;}i:2;a:3:{s:9:"expr_type";s:8:"function";s:9:"base_expr";s:7:"TO_DAYS";s:8:"sub_tree";a:1:{i:0;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:11:"sp.vu_start";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:2:"sp";i:1;s:8:"vu_start";}}s:8:"sub_tree";b:0;}}}}s:5:"alias";b:0;}i:2;a:3:{s:9:"expr_type";s:8:"function";s:9:"base_expr";s:2:"IF";s:8:"sub_tree";a:3:{i:0;a:4:{s:9:"expr_type";s:10:"expression";s:9:"base_expr";s:42:"TO_DAYS(now()) > TO_DAYS(sp.vu_stop) - ";s:8:"sub_tree";a:3:{i:0;a:3:{s:9:"expr_type";s:8:"function";s:9:"base_expr";s:7:"TO_DAYS";s:8:"sub_tree";a:1:{i:0;a:3:{s:9:"expr_type";s:8:"function";s:9:"base_expr";s:3:"now";s:8:"sub_tree";a:0:{}}}}i:1;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:">";s:8:"sub_tree";b:0;}i:2;a:3:{s:9:"expr_type";s:8:"function";s:9:"base_expr";s:7:"TO_DAYS";s:8:"sub_tree";a:1:{i:0;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:10:"sp.vu_stop";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:2:"sp";i:1;s:7:"vu_stop";}}s:8:"sub_tree";b:0;}}}}s:5:"alias";b:0;}i:1;a:4:{s:9:"expr_type";s:10:"expression";s:9:"base_expr";s:43:" TO_DAYS(now()) - TO_DAYS(sp.vu_stop) - ";s:8:"sub_tree";a:3:{i:0;a:3:{s:9:"expr_type";s:8:"function";s:9:"base_expr";s:7:"TO_DAYS";s:8:"sub_tree";a:1:{i:0;a:3:{s:9:"expr_type";s:8:"function";s:9:"base_expr";s:3:"now";s:8:"sub_tree";a:0:{}}}}i:1;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"-";s:8:"sub_tree";b:0;}i:2;a:3:{s:9:"expr_type";s:8:"function";s:9:"base_expr";s:7:"TO_DAYS";s:8:"sub_tree";a:1:{i:0;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:10:"sp.vu_stop";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:2:"sp";i:1;s:7:"vu_stop";}}s:8:"sub_tree";b:0;}}}}s:5:"alias";b:0;}i:2;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:1:"0";s:8:"sub_tree";b:0;}}}}}}s:5:"delim";s:1:",";}i:9;a:6:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:5:"st.id";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:2:"st";i:1;s:2:"id";}}s:8:"sub_tree";b:0;s:5:"delim";s:1:",";}i:10;a:5:{s:9:"expr_type";s:18:"aggregate_function";s:5:"alias";a:4:{s:2:"as";b:1;s:4:"name";s:4:"view";s:9:"base_expr";s:7:"AS view";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:4:"view";}}}s:9:"base_expr";s:3:"SUM";s:8:"sub_tree";a:1:{i:0;a:3:{s:9:"expr_type";s:8:"function";s:9:"base_expr";s:2:"IF";s:8:"sub_tree";a:3:{i:0;a:4:{s:9:"expr_type";s:10:"expression";s:9:"base_expr";s:14:"st.type='view'";s:8:"sub_tree";a:3:{i:0;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:7:"st.type";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:2:"st";i:1;s:4:"type";}}s:8:"sub_tree";b:0;}i:1;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";s:8:"sub_tree";b:0;}i:2;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:6:"'view'";s:8:"sub_tree";b:0;}}s:5:"alias";b:0;}i:1;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:1:"1";s:8:"sub_tree";b:0;}i:2;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:1:"0";s:8:"sub_tree";b:0;}}}}s:5:"delim";s:1:",";}i:11;a:5:{s:9:"expr_type";s:18:"aggregate_function";s:5:"alias";a:4:{s:2:"as";b:1;s:4:"name";s:5:"click";s:9:"base_expr";s:8:"AS click";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:5:"click";}}}s:9:"base_expr";s:3:"SUM";s:8:"sub_tree";a:1:{i:0;a:3:{s:9:"expr_type";s:8:"function";s:9:"base_expr";s:2:"IF";s:8:"sub_tree";a:3:{i:0;a:4:{s:9:"expr_type";s:10:"expression";s:9:"base_expr";s:15:"st.type='click'";s:8:"sub_tree";a:3:{i:0;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:7:"st.type";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:2:"st";i:1;s:4:"type";}}s:8:"sub_tree";b:0;}i:1;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";s:8:"sub_tree";b:0;}i:2;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:7:"'click'";s:8:"sub_tree";b:0;}}s:5:"alias";b:0;}i:1;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:1:"1";s:8:"sub_tree";b:0;}i:2;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:1:"0";s:8:"sub_tree";b:0;}}}}s:5:"delim";b:0;}}s:4:"FROM";a:2:{i:0;a:10:{s:9:"expr_type";s:5:"table";s:5:"table";s:5:"stats";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:5:"stats";}}s:5:"alias";a:4:{s:2:"as";b:1;s:4:"name";s:2:"st";s:9:"base_expr";s:5:"AS st";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:2:"st";}}}s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:11:"stats AS st";s:8:"sub_tree";b:0;}i:1;a:10:{s:9:"expr_type";s:5:"table";s:5:"table";s:7:"sponsor";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:7:"sponsor";}}s:5:"alias";a:4:{s:2:"as";b:1;s:4:"name";s:2:"sp";s:9:"base_expr";s:5:"AS sp";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:2:"sp";}}}s:5:"hints";b:0;s:9:"join_type";s:5:"CROSS";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:13:"sponsor AS sp";s:8:"sub_tree";b:0;}}s:5:"WHERE";a:3:{i:0;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:5:"st.id";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:2:"st";i:1;s:2:"id";}}s:8:"sub_tree";b:0;}i:1;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";s:8:"sub_tree";b:0;}i:2;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:5:"sp.id";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:2:"sp";i:1;s:2:"id";}}s:8:"sub_tree";b:0;}}s:5:"GROUP";a:1:{i:0;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:5:"st.id";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:2:"st";i:1;s:2:"id";}}s:8:"sub_tree";b:0;}}s:5:"ORDER";a:2:{i:0;a:5:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:9:"sp.alt_en";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:2:"sp";i:1;s:6:"alt_en";}}s:8:"sub_tree";b:0;s:9:"direction";s:3:"ASC";}i:1;a:5:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:9:"sp.alt_pl";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:2:"sp";i:1;s:6:"alt_pl";}}s:8:"sub_tree";b:0;s:9:"direction";s:3:"ASC";}}} \ No newline at end of file + ";s:8:"sub_tree";a:3:{i:0;a:3:{s:9:"expr_type";s:8:"function";s:9:"base_expr";s:7:"TO_DAYS";s:8:"sub_tree";a:1:{i:0;a:3:{s:9:"expr_type";s:8:"function";s:9:"base_expr";s:3:"now";s:8:"sub_tree";b:0;}}}i:1;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"<";s:8:"sub_tree";b:0;}i:2;a:3:{s:9:"expr_type";s:8:"function";s:9:"base_expr";s:7:"TO_DAYS";s:8:"sub_tree";a:1:{i:0;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:11:"sp.vu_start";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:2:"sp";i:1;s:8:"vu_start";}}s:8:"sub_tree";b:0;}}}}s:5:"alias";b:0;}i:1;a:4:{s:9:"expr_type";s:10:"expression";s:9:"base_expr";s:43:" TO_DAYS(now()) - TO_DAYS(sp.vu_start) + ";s:8:"sub_tree";a:3:{i:0;a:3:{s:9:"expr_type";s:8:"function";s:9:"base_expr";s:7:"TO_DAYS";s:8:"sub_tree";a:1:{i:0;a:3:{s:9:"expr_type";s:8:"function";s:9:"base_expr";s:3:"now";s:8:"sub_tree";b:0;}}}i:1;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"-";s:8:"sub_tree";b:0;}i:2;a:3:{s:9:"expr_type";s:8:"function";s:9:"base_expr";s:7:"TO_DAYS";s:8:"sub_tree";a:1:{i:0;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:11:"sp.vu_start";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:2:"sp";i:1;s:8:"vu_start";}}s:8:"sub_tree";b:0;}}}}s:5:"alias";b:0;}i:2;a:3:{s:9:"expr_type";s:8:"function";s:9:"base_expr";s:2:"IF";s:8:"sub_tree";a:3:{i:0;a:4:{s:9:"expr_type";s:10:"expression";s:9:"base_expr";s:42:"TO_DAYS(now()) > TO_DAYS(sp.vu_stop) + ";s:8:"sub_tree";a:3:{i:0;a:3:{s:9:"expr_type";s:8:"function";s:9:"base_expr";s:7:"TO_DAYS";s:8:"sub_tree";a:1:{i:0;a:3:{s:9:"expr_type";s:8:"function";s:9:"base_expr";s:3:"now";s:8:"sub_tree";b:0;}}}i:1;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:">";s:8:"sub_tree";b:0;}i:2;a:3:{s:9:"expr_type";s:8:"function";s:9:"base_expr";s:7:"TO_DAYS";s:8:"sub_tree";a:1:{i:0;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:10:"sp.vu_stop";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:2:"sp";i:1;s:7:"vu_stop";}}s:8:"sub_tree";b:0;}}}}s:5:"alias";b:0;}i:1;a:4:{s:9:"expr_type";s:10:"expression";s:9:"base_expr";s:43:" TO_DAYS(now()) - TO_DAYS(sp.vu_stop) + ";s:8:"sub_tree";a:3:{i:0;a:3:{s:9:"expr_type";s:8:"function";s:9:"base_expr";s:7:"TO_DAYS";s:8:"sub_tree";a:1:{i:0;a:3:{s:9:"expr_type";s:8:"function";s:9:"base_expr";s:3:"now";s:8:"sub_tree";b:0;}}}i:1;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"-";s:8:"sub_tree";b:0;}i:2;a:3:{s:9:"expr_type";s:8:"function";s:9:"base_expr";s:7:"TO_DAYS";s:8:"sub_tree";a:1:{i:0;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:10:"sp.vu_stop";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:2:"sp";i:1;s:7:"vu_stop";}}s:8:"sub_tree";b:0;}}}}s:5:"alias";b:0;}i:2;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:1:"0";s:8:"sub_tree";b:0;}}}}}}s:5:"delim";s:1:",";}i:9;a:6:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:5:"st.id";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:2:"st";i:1;s:2:"id";}}s:8:"sub_tree";b:0;s:5:"delim";s:1:",";}i:10;a:5:{s:9:"expr_type";s:18:"aggregate_function";s:5:"alias";a:4:{s:2:"as";b:1;s:4:"name";s:4:"view";s:9:"base_expr";s:7:"AS view";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:4:"view";}}}s:9:"base_expr";s:3:"SUM";s:8:"sub_tree";a:1:{i:0;a:3:{s:9:"expr_type";s:8:"function";s:9:"base_expr";s:2:"IF";s:8:"sub_tree";a:3:{i:0;a:4:{s:9:"expr_type";s:10:"expression";s:9:"base_expr";s:14:"st.type='view'";s:8:"sub_tree";a:3:{i:0;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:7:"st.type";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:2:"st";i:1;s:4:"type";}}s:8:"sub_tree";b:0;}i:1;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";s:8:"sub_tree";b:0;}i:2;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:6:"'view'";s:8:"sub_tree";b:0;}}s:5:"alias";b:0;}i:1;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:1:"1";s:8:"sub_tree";b:0;}i:2;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:1:"0";s:8:"sub_tree";b:0;}}}}s:5:"delim";s:1:",";}i:11;a:5:{s:9:"expr_type";s:18:"aggregate_function";s:5:"alias";a:4:{s:2:"as";b:1;s:4:"name";s:5:"click";s:9:"base_expr";s:8:"AS click";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:5:"click";}}}s:9:"base_expr";s:3:"SUM";s:8:"sub_tree";a:1:{i:0;a:3:{s:9:"expr_type";s:8:"function";s:9:"base_expr";s:2:"IF";s:8:"sub_tree";a:3:{i:0;a:4:{s:9:"expr_type";s:10:"expression";s:9:"base_expr";s:15:"st.type='click'";s:8:"sub_tree";a:3:{i:0;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:7:"st.type";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:2:"st";i:1;s:4:"type";}}s:8:"sub_tree";b:0;}i:1;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";s:8:"sub_tree";b:0;}i:2;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:7:"'click'";s:8:"sub_tree";b:0;}}s:5:"alias";b:0;}i:1;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:1:"1";s:8:"sub_tree";b:0;}i:2;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:1:"0";s:8:"sub_tree";b:0;}}}}s:5:"delim";b:0;}}s:4:"FROM";a:2:{i:0;a:10:{s:9:"expr_type";s:5:"table";s:5:"table";s:5:"stats";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:5:"stats";}}s:5:"alias";a:4:{s:2:"as";b:1;s:4:"name";s:2:"st";s:9:"base_expr";s:5:"AS st";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:2:"st";}}}s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:11:"stats AS st";s:8:"sub_tree";b:0;}i:1;a:10:{s:9:"expr_type";s:5:"table";s:5:"table";s:7:"sponsor";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:7:"sponsor";}}s:5:"alias";a:4:{s:2:"as";b:1;s:4:"name";s:2:"sp";s:9:"base_expr";s:5:"AS sp";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:2:"sp";}}}s:5:"hints";b:0;s:9:"join_type";s:5:"CROSS";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:13:"sponsor AS sp";s:8:"sub_tree";b:0;}}s:5:"WHERE";a:3:{i:0;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:5:"st.id";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:2:"st";i:1;s:2:"id";}}s:8:"sub_tree";b:0;}i:1;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";s:8:"sub_tree";b:0;}i:2;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:5:"sp.id";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:2:"sp";i:1;s:2:"id";}}s:8:"sub_tree";b:0;}}s:5:"GROUP";a:1:{i:0;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:5:"st.id";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:2:"st";i:1;s:2:"id";}}s:8:"sub_tree";b:0;}}s:5:"ORDER";a:2:{i:0;a:5:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:9:"sp.alt_en";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:2:"sp";i:1;s:6:"alt_en";}}s:8:"sub_tree";b:0;s:9:"direction";s:3:"ASC";}i:1;a:5:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:9:"sp.alt_pl";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:2:"sp";i:1;s:6:"alt_pl";}}s:8:"sub_tree";b:0;s:9:"direction";s:3:"ASC";}}} \ No newline at end of file diff --git a/tests/expected/parser/issue38.serialized b/tests/expected/parser/issue38.serialized index 83e3f04e..f71e5415 100644 --- a/tests/expected/parser/issue38.serialized +++ b/tests/expected/parser/issue38.serialized @@ -1 +1 @@ -a:3:{s:6:"SELECT";a:1:{i:0;a:5:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:1:"*";s:8:"sub_tree";b:0;s:5:"delim";b:0;}}s:4:"FROM";a:1:{i:0;a:10:{s:9:"expr_type";s:5:"table";s:5:"table";s:7:"`table`";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:5:"table";}}s:5:"alias";a:4:{s:2:"as";b:0;s:4:"name";s:3:"`t`";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"t";}}s:9:"base_expr";s:3:"`t`";}s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:11:"`table` `t`";s:8:"sub_tree";b:0;}}s:5:"WHERE";a:1:{i:0;a:3:{s:9:"expr_type";s:18:"bracket_expression";s:9:"base_expr";s:47:"( ( UNIX_TIMESTAMP() + 3600 ) > `t`.`expires` )";s:8:"sub_tree";a:3:{i:0;a:3:{s:9:"expr_type";s:18:"bracket_expression";s:9:"base_expr";s:27:"( UNIX_TIMESTAMP() + 3600 )";s:8:"sub_tree";a:3:{i:0;a:3:{s:9:"expr_type";s:8:"function";s:9:"base_expr";s:14:"UNIX_TIMESTAMP";s:8:"sub_tree";a:0:{}}i:1;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"+";s:8:"sub_tree";b:0;}i:2;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:4:"3600";s:8:"sub_tree";b:0;}}}i:1;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:">";s:8:"sub_tree";b:0;}i:2;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:13:"`t`.`expires`";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:1:"t";i:1;s:7:"expires";}}s:8:"sub_tree";b:0;}}}}} \ No newline at end of file +a:3:{s:6:"SELECT";a:1:{i:0;a:5:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:1:"*";s:8:"sub_tree";b:0;s:5:"delim";b:0;}}s:4:"FROM";a:1:{i:0;a:10:{s:9:"expr_type";s:5:"table";s:5:"table";s:7:"`table`";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:5:"table";}}s:5:"alias";a:4:{s:2:"as";b:0;s:4:"name";s:3:"`t`";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"t";}}s:9:"base_expr";s:3:"`t`";}s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:11:"`table` `t`";s:8:"sub_tree";b:0;}}s:5:"WHERE";a:1:{i:0;a:3:{s:9:"expr_type";s:18:"bracket_expression";s:9:"base_expr";s:47:"( ( UNIX_TIMESTAMP() + 3600 ) > `t`.`expires` )";s:8:"sub_tree";a:3:{i:0;a:3:{s:9:"expr_type";s:18:"bracket_expression";s:9:"base_expr";s:27:"( UNIX_TIMESTAMP() + 3600 )";s:8:"sub_tree";a:3:{i:0;a:3:{s:9:"expr_type";s:8:"function";s:9:"base_expr";s:14:"UNIX_TIMESTAMP";s:8:"sub_tree";b:0;}i:1;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"+";s:8:"sub_tree";b:0;}i:2;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:4:"3600";s:8:"sub_tree";b:0;}}}i:1;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:">";s:8:"sub_tree";b:0;}i:2;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:13:"`t`.`expires`";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:1:"t";i:1;s:7:"expires";}}s:8:"sub_tree";b:0;}}}}} \ No newline at end of file diff --git a/tests/expected/parser/issue69.serialized b/tests/expected/parser/issue69.serialized index cf75c4f3..2e0d3475 100644 --- a/tests/expected/parser/issue69.serialized +++ b/tests/expected/parser/issue69.serialized @@ -1 +1 @@ -a:3:{s:6:"SELECT";a:1:{i:0;a:6:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:1:"*";s:8:"sub_tree";b:0;s:5:"delim";b:0;s:8:"position";i:7;}}s:4:"FROM";a:1:{i:0;a:10:{s:9:"expr_type";s:5:"table";s:5:"table";s:6:"table1";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:6:"table1";}}s:5:"alias";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:6:"table1";s:8:"sub_tree";b:0;s:8:"position";i:14;}}s:5:"WHERE";a:7:{i:0;a:5:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:4:"col1";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:4:"col1";}}s:8:"sub_tree";b:0;s:8:"position";i:27;}i:1;a:4:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:2:"<>";s:8:"sub_tree";b:0;s:8:"position";i:31;}i:2;a:5:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:4:"col2";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:4:"col2";}}s:8:"sub_tree";b:0;s:8:"position";i:33;}i:3;a:4:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:2:"or";s:8:"sub_tree";b:0;s:8:"position";i:38;}i:4;a:5:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:4:"col3";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:4:"col3";}}s:8:"sub_tree";b:0;s:8:"position";i:41;}i:5;a:4:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:2:"is";s:8:"sub_tree";b:0;s:8:"position";i:46;}i:6;a:4:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:4:"null";s:8:"sub_tree";b:0;s:8:"position";i:49;}}} \ No newline at end of file +a:3:{s:6:"SELECT";a:1:{i:0;a:6:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:1:"*";s:8:"sub_tree";b:0;s:5:"delim";b:0;s:8:"position";i:7;}}s:4:"FROM";a:1:{i:0;a:11:{s:9:"expr_type";s:5:"table";s:5:"table";s:6:"table1";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:6:"table1";}}s:5:"alias";b:0;s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:6:"table1";s:8:"sub_tree";b:0;s:8:"position";i:14;}}s:5:"WHERE";a:7:{i:0;a:5:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:4:"col1";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:4:"col1";}}s:8:"sub_tree";b:0;s:8:"position";i:27;}i:1;a:4:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:2:"<>";s:8:"sub_tree";b:0;s:8:"position";i:31;}i:2;a:5:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:4:"col2";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:4:"col2";}}s:8:"sub_tree";b:0;s:8:"position";i:33;}i:3;a:4:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:2:"or";s:8:"sub_tree";b:0;s:8:"position";i:38;}i:4;a:5:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:4:"col3";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:4:"col3";}}s:8:"sub_tree";b:0;s:8:"position";i:41;}i:5;a:4:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:2:"is";s:8:"sub_tree";b:0;s:8:"position";i:46;}i:6;a:4:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:4:"null";s:8:"sub_tree";b:0;s:8:"position";i:49;}}} \ No newline at end of file diff --git a/tests/expected/parser/issue70.serialized b/tests/expected/parser/issue70.serialized index cf35d0b0..ec8d7bb1 100644 --- a/tests/expected/parser/issue70.serialized +++ b/tests/expected/parser/issue70.serialized @@ -1 +1 @@ -a:3:{s:6:"SELECT";a:1:{i:0;a:7:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:8:"`column`";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:6:"column";}}s:8:"sub_tree";b:0;s:5:"delim";b:0;s:8:"position";i:7;}}s:4:"FROM";a:1:{i:0;a:10:{s:9:"expr_type";s:5:"table";s:5:"table";s:5:"table";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:5:"table";}}s:5:"alias";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:5:"table";s:8:"sub_tree";b:0;s:8:"position";i:21;}}s:5:"WHERE";a:3:{i:0;a:5:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:3:"col";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:3:"col";}}s:8:"sub_tree";b:0;s:8:"position";i:33;}i:1;a:4:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";s:8:"sub_tree";b:0;s:8:"position";i:36;}i:2;a:4:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:7:""value"";s:8:"sub_tree";b:0;s:8:"position";i:37;}}} \ No newline at end of file +a:3:{s:6:"SELECT";a:1:{i:0;a:7:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:8:"`column`";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:6:"column";}}s:8:"sub_tree";b:0;s:5:"delim";b:0;s:8:"position";i:7;}}s:4:"FROM";a:1:{i:0;a:11:{s:9:"expr_type";s:5:"table";s:5:"table";s:5:"table";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:5:"table";}}s:5:"alias";b:0;s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:5:"table";s:8:"sub_tree";b:0;s:8:"position";i:21;}}s:5:"WHERE";a:3:{i:0;a:5:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:3:"col";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:3:"col";}}s:8:"sub_tree";b:0;s:8:"position";i:33;}i:1;a:4:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";s:8:"sub_tree";b:0;s:8:"position";i:36;}i:2;a:4:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:7:""value"";s:8:"sub_tree";b:0;s:8:"position";i:37;}}} \ No newline at end of file diff --git a/tests/expected/parser/issue71a.serialized b/tests/expected/parser/issue71a.serialized index 1076a1e4..e5083c82 100644 --- a/tests/expected/parser/issue71a.serialized +++ b/tests/expected/parser/issue71a.serialized @@ -1 +1 @@ -a:2:{s:6:"SELECT";a:1:{i:0;a:5:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:1:"*";s:8:"sub_tree";b:0;s:5:"delim";b:0;}}s:4:"FROM";a:1:{i:0;a:9:{s:9:"expr_type";s:5:"table";s:5:"table";s:6:"table1";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:6:"table1";}}s:5:"alias";a:4:{s:2:"as";b:1;s:4:"name";s:5:"event";s:9:"base_expr";s:8:"as event";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:5:"event";}}}s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:15:"table1 as event";s:8:"sub_tree";b:0;}}} \ No newline at end of file +a:2:{s:6:"SELECT";a:1:{i:0;a:5:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:1:"*";s:8:"sub_tree";b:0;s:5:"delim";b:0;}}s:4:"FROM";a:1:{i:0;a:10:{s:9:"expr_type";s:5:"table";s:5:"table";s:6:"table1";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:6:"table1";}}s:5:"alias";a:4:{s:2:"as";b:1;s:4:"name";s:5:"event";s:9:"base_expr";s:8:"as event";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:5:"event";}}}s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:15:"table1 as event";s:8:"sub_tree";b:0;}}} \ No newline at end of file diff --git a/tests/expected/parser/issue71b.serialized b/tests/expected/parser/issue71b.serialized index 8b82487e..38d9bdd7 100644 --- a/tests/expected/parser/issue71b.serialized +++ b/tests/expected/parser/issue71b.serialized @@ -1 +1 @@ -a:2:{s:6:"SELECT";a:1:{i:0;a:6:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:4:"acol";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:4:"acol";}}s:8:"sub_tree";b:0;s:5:"delim";b:0;}}s:4:"FROM";a:1:{i:0;a:9:{s:9:"expr_type";s:5:"table";s:5:"table";s:5:"table";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:5:"table";}}s:5:"alias";a:4:{s:2:"as";b:1;s:4:"name";s:4:"data";s:9:"base_expr";s:7:"as data";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:4:"data";}}}s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:13:"table as data";s:8:"sub_tree";b:0;}}} \ No newline at end of file +a:2:{s:6:"SELECT";a:1:{i:0;a:6:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:4:"acol";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:4:"acol";}}s:8:"sub_tree";b:0;s:5:"delim";b:0;}}s:4:"FROM";a:1:{i:0;a:10:{s:9:"expr_type";s:5:"table";s:5:"table";s:5:"table";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:5:"table";}}s:5:"alias";a:4:{s:2:"as";b:1;s:4:"name";s:4:"data";s:9:"base_expr";s:7:"as data";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:4:"data";}}}s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:13:"table as data";s:8:"sub_tree";b:0;}}} \ No newline at end of file diff --git a/tests/expected/parser/issue72.serialized b/tests/expected/parser/issue72.serialized index 731d50d3..6606b8ce 100644 --- a/tests/expected/parser/issue72.serialized +++ b/tests/expected/parser/issue72.serialized @@ -1 +1 @@ -a:2:{s:6:"UPDATE";a:1:{i:0;a:9:{s:9:"expr_type";s:5:"table";s:5:"table";s:5:"table";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:5:"table";}}s:5:"alias";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:5:"table";s:8:"sub_tree";b:0;}}s:3:"SET";a:1:{i:0;a:3:{s:9:"expr_type";s:10:"expression";s:9:"base_expr";s:11:"column=@max";s:8:"sub_tree";a:3:{i:0;a:3:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:6:"column";s:8:"sub_tree";b:0;}i:1;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";s:8:"sub_tree";b:0;}i:2;a:4:{s:9:"expr_type";s:13:"user_variable";s:9:"base_expr";s:4:"@max";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:3:"max";}}s:8:"sub_tree";b:0;}}}}} \ No newline at end of file +a:2:{s:6:"UPDATE";a:1:{i:0;a:10:{s:9:"expr_type";s:5:"table";s:5:"table";s:5:"table";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:5:"table";}}s:5:"alias";b:0;s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:5:"table";s:8:"sub_tree";b:0;}}s:3:"SET";a:1:{i:0;a:3:{s:9:"expr_type";s:10:"expression";s:9:"base_expr";s:8:"col=@max";s:8:"sub_tree";a:3:{i:0;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:3:"col";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:3:"col";}}s:8:"sub_tree";b:0;}i:1;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";s:8:"sub_tree";b:0;}i:2;a:4:{s:9:"expr_type";s:13:"user_variable";s:9:"base_expr";s:4:"@max";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:3:"max";}}s:8:"sub_tree";b:0;}}}}} \ No newline at end of file diff --git a/tests/expected/parser/issue78a.serialized b/tests/expected/parser/issue78a.serialized index 41b748f6..d3f5e2d5 100644 --- a/tests/expected/parser/issue78a.serialized +++ b/tests/expected/parser/issue78a.serialized @@ -1 +1 @@ -a:3:{s:7:"EXPLAIN";a:3:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:8:"EXTENDED";s:8:"position";i:8;}s:6:"SELECT";a:1:{i:0;a:6:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:1:"*";s:8:"sub_tree";b:0;s:5:"delim";b:0;s:8:"position";i:24;}}s:4:"FROM";a:1:{i:0;a:10:{s:9:"expr_type";s:5:"table";s:5:"table";s:7:"foo.bar";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:3:"foo";i:1;s:3:"bar";}}s:5:"alias";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:7:"foo.bar";s:8:"sub_tree";b:0;s:8:"position";i:31;}}} \ No newline at end of file +a:3:{s:7:"EXPLAIN";a:3:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:8:"EXTENDED";s:8:"position";i:8;}s:6:"SELECT";a:1:{i:0;a:6:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:1:"*";s:8:"sub_tree";b:0;s:5:"delim";b:0;s:8:"position";i:24;}}s:4:"FROM";a:1:{i:0;a:11:{s:9:"expr_type";s:5:"table";s:5:"table";s:7:"foo.bar";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:3:"foo";i:1;s:3:"bar";}}s:5:"alias";b:0;s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:7:"foo.bar";s:8:"sub_tree";b:0;s:8:"position";i:31;}}} \ No newline at end of file diff --git a/tests/expected/parser/issue78b.serialized b/tests/expected/parser/issue78b.serialized index 8763e808..cd6fa1e2 100644 --- a/tests/expected/parser/issue78b.serialized +++ b/tests/expected/parser/issue78b.serialized @@ -1 +1 @@ -a:3:{s:7:"EXPLAIN";N;s:6:"SELECT";a:1:{i:0;a:6:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:1:"*";s:8:"sub_tree";b:0;s:5:"delim";b:0;s:8:"position";i:15;}}s:4:"FROM";a:1:{i:0;a:10:{s:9:"expr_type";s:5:"table";s:5:"table";s:7:"foo.bar";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:3:"foo";i:1;s:3:"bar";}}s:5:"alias";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:7:"foo.bar";s:8:"sub_tree";b:0;s:8:"position";i:22;}}} \ No newline at end of file +a:3:{s:7:"EXPLAIN";N;s:6:"SELECT";a:1:{i:0;a:6:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:1:"*";s:8:"sub_tree";b:0;s:5:"delim";b:0;s:8:"position";i:15;}}s:4:"FROM";a:1:{i:0;a:11:{s:9:"expr_type";s:5:"table";s:5:"table";s:7:"foo.bar";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:3:"foo";i:1;s:3:"bar";}}s:5:"alias";b:0;s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:7:"foo.bar";s:8:"sub_tree";b:0;s:8:"position";i:22;}}} \ No newline at end of file diff --git a/tests/expected/parser/issue78e.serialized b/tests/expected/parser/issue78e.serialized index 8d31fb24..49b291f1 100644 --- a/tests/expected/parser/issue78e.serialized +++ b/tests/expected/parser/issue78e.serialized @@ -1 +1 @@ -a:4:{s:4:"DESC";a:4:{s:9:"expr_type";s:10:"expression";s:9:"base_expr";s:13:"FORMAT = JSON";s:8:"sub_tree";a:3:{i:0;a:3:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:6:"FORMAT";s:8:"position";i:5;}i:1;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";s:8:"position";i:12;}i:2;a:3:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:4:"JSON";s:8:"position";i:14;}}s:8:"position";i:5;}s:6:"DELETE";a:2:{s:7:"options";a:0:{}s:6:"tables";a:0:{}}s:4:"FROM";a:1:{i:0;a:10:{s:9:"expr_type";s:5:"table";s:5:"table";s:6:"tableA";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:6:"tableA";}}s:5:"alias";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:6:"tableA";s:8:"sub_tree";b:0;s:8:"position";i:31;}}s:5:"WHERE";a:3:{i:0;a:5:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:1:"x";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"x";}}s:8:"sub_tree";b:0;s:8:"position";i:44;}i:1;a:4:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";s:8:"sub_tree";b:0;s:8:"position";i:45;}i:2;a:4:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:1:"1";s:8:"sub_tree";b:0;s:8:"position";i:46;}}} \ No newline at end of file +a:4:{s:4:"DESC";a:4:{s:9:"expr_type";s:10:"expression";s:9:"base_expr";s:13:"FORMAT = JSON";s:8:"sub_tree";a:3:{i:0;a:3:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:6:"FORMAT";s:8:"position";i:5;}i:1;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";s:8:"position";i:12;}i:2;a:3:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:4:"JSON";s:8:"position";i:14;}}s:8:"position";i:5;}s:6:"DELETE";a:2:{s:7:"options";b:0;s:6:"tables";b:0;}s:4:"FROM";a:1:{i:0;a:11:{s:9:"expr_type";s:5:"table";s:5:"table";s:6:"tableA";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:6:"tableA";}}s:5:"alias";b:0;s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:6:"tableA";s:8:"sub_tree";b:0;s:8:"position";i:31;}}s:5:"WHERE";a:3:{i:0;a:5:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:1:"x";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"x";}}s:8:"sub_tree";b:0;s:8:"position";i:44;}i:1;a:4:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";s:8:"sub_tree";b:0;s:8:"position";i:45;}i:2;a:4:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:1:"1";s:8:"sub_tree";b:0;s:8:"position";i:46;}}} \ No newline at end of file diff --git a/tests/expected/parser/issue79a.serialized b/tests/expected/parser/issue79a.serialized index c5759a3c..5107cd40 100644 --- a/tests/expected/parser/issue79a.serialized +++ b/tests/expected/parser/issue79a.serialized @@ -1 +1 @@ -a:3:{s:6:"SELECT";a:1:{i:0;a:5:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:1:"*";s:8:"sub_tree";b:0;s:5:"delim";b:0;}}s:4:"FROM";a:1:{i:0;a:9:{s:9:"expr_type";s:5:"table";s:5:"table";s:7:"`users`";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:5:"users";}}s:5:"alias";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:7:"`users`";s:8:"sub_tree";b:0;}}s:5:"WHERE";a:3:{i:0;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:7:"id_user";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:7:"id_user";}}s:8:"sub_tree";b:0;}i:1;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";s:8:"sub_tree";b:0;}i:2;a:4:{s:9:"expr_type";s:13:"user_variable";s:9:"base_expr";s:8:"@ID_USER";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:7:"ID_USER";}}s:8:"sub_tree";b:0;}}} \ No newline at end of file +a:3:{s:6:"SELECT";a:1:{i:0;a:5:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:1:"*";s:8:"sub_tree";b:0;s:5:"delim";b:0;}}s:4:"FROM";a:1:{i:0;a:10:{s:9:"expr_type";s:5:"table";s:5:"table";s:7:"`users`";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:5:"users";}}s:5:"alias";b:0;s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:7:"`users`";s:8:"sub_tree";b:0;}}s:5:"WHERE";a:3:{i:0;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:7:"id_user";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:7:"id_user";}}s:8:"sub_tree";b:0;}i:1;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";s:8:"sub_tree";b:0;}i:2;a:4:{s:9:"expr_type";s:13:"user_variable";s:9:"base_expr";s:8:"@ID_USER";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:7:"ID_USER";}}s:8:"sub_tree";b:0;}}} \ No newline at end of file diff --git a/tests/expected/parser/issue79b.serialized b/tests/expected/parser/issue79b.serialized index 0befa345..bc2b9185 100644 --- a/tests/expected/parser/issue79b.serialized +++ b/tests/expected/parser/issue79b.serialized @@ -1 +1 @@ -a:3:{s:6:"SELECT";a:2:{i:0;a:5:{s:9:"expr_type";s:18:"bracket_expression";s:5:"alias";a:4:{s:2:"as";b:1;s:4:"name";s:1:"a";s:9:"base_expr";s:4:"AS a";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"a";}}}s:9:"base_expr";s:9:"(@aa:=id)";s:8:"sub_tree";a:3:{i:0;a:4:{s:9:"expr_type";s:13:"user_variable";s:9:"base_expr";s:3:"@aa";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:2:"aa";}}s:8:"sub_tree";b:0;}i:1;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:2:":=";s:8:"sub_tree";b:0;}i:2;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:2:"id";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:2:"id";}}s:8:"sub_tree";b:0;}}s:5:"delim";s:1:",";}i:1;a:5:{s:9:"expr_type";s:18:"bracket_expression";s:5:"alias";a:4:{s:2:"as";b:1;s:4:"name";s:1:"b";s:9:"base_expr";s:4:"AS b";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"b";}}}s:9:"base_expr";s:7:"(@aa+3)";s:8:"sub_tree";a:3:{i:0;a:4:{s:9:"expr_type";s:13:"user_variable";s:9:"base_expr";s:3:"@aa";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:2:"aa";}}s:8:"sub_tree";b:0;}i:1;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"+";s:8:"sub_tree";b:0;}i:2;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:1:"3";s:8:"sub_tree";b:0;}}s:5:"delim";b:0;}}s:4:"FROM";a:1:{i:0;a:9:{s:9:"expr_type";s:5:"table";s:5:"table";s:8:"tbl_name";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:8:"tbl_name";}}s:5:"alias";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:8:"tbl_name";s:8:"sub_tree";b:0;}}s:6:"HAVING";a:3:{i:0;a:4:{s:9:"expr_type";s:5:"alias";s:9:"base_expr";s:1:"b";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"b";}}s:8:"sub_tree";b:0;}i:1;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";s:8:"sub_tree";b:0;}i:2;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:1:"5";s:8:"sub_tree";b:0;}}} \ No newline at end of file +a:3:{s:6:"SELECT";a:2:{i:0;a:5:{s:9:"expr_type";s:18:"bracket_expression";s:5:"alias";a:4:{s:2:"as";b:1;s:4:"name";s:1:"a";s:9:"base_expr";s:4:"AS a";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"a";}}}s:9:"base_expr";s:9:"(@aa:=id)";s:8:"sub_tree";a:3:{i:0;a:4:{s:9:"expr_type";s:13:"user_variable";s:9:"base_expr";s:3:"@aa";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:2:"aa";}}s:8:"sub_tree";b:0;}i:1;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:2:":=";s:8:"sub_tree";b:0;}i:2;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:2:"id";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:2:"id";}}s:8:"sub_tree";b:0;}}s:5:"delim";s:1:",";}i:1;a:5:{s:9:"expr_type";s:18:"bracket_expression";s:5:"alias";a:4:{s:2:"as";b:1;s:4:"name";s:1:"b";s:9:"base_expr";s:4:"AS b";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"b";}}}s:9:"base_expr";s:7:"(@aa+3)";s:8:"sub_tree";a:3:{i:0;a:4:{s:9:"expr_type";s:13:"user_variable";s:9:"base_expr";s:3:"@aa";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:2:"aa";}}s:8:"sub_tree";b:0;}i:1;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"+";s:8:"sub_tree";b:0;}i:2;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:1:"3";s:8:"sub_tree";b:0;}}s:5:"delim";b:0;}}s:4:"FROM";a:1:{i:0;a:10:{s:9:"expr_type";s:5:"table";s:5:"table";s:8:"tbl_name";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:8:"tbl_name";}}s:5:"alias";b:0;s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:8:"tbl_name";s:8:"sub_tree";b:0;}}s:6:"HAVING";a:3:{i:0;a:4:{s:9:"expr_type";s:5:"alias";s:9:"base_expr";s:1:"b";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"b";}}s:8:"sub_tree";b:0;}i:1;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";s:8:"sub_tree";b:0;}i:2;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:1:"5";s:8:"sub_tree";b:0;}}} \ No newline at end of file diff --git a/tests/expected/parser/issue80a.serialized b/tests/expected/parser/issue80a.serialized index b6bcc2ae..113292e7 100644 --- a/tests/expected/parser/issue80a.serialized +++ b/tests/expected/parser/issue80a.serialized @@ -1 +1 @@ -a:4:{s:6:"SELECT";a:1:{i:0;a:6:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:1:"*";s:8:"sub_tree";b:0;s:5:"delim";b:0;s:8:"position";i:7;}}s:4:"FROM";a:1:{i:0;a:10:{s:9:"expr_type";s:5:"table";s:5:"table";s:7:"`model`";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:5:"model";}}s:5:"alias";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:7:"`model`";s:8:"sub_tree";b:0;s:8:"position";i:14;}}s:5:"WHERE";a:3:{i:0;a:5:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:8:"`marker`";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:6:"marker";}}s:8:"sub_tree";b:0;s:8:"position";i:28;}i:1;a:4:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";s:8:"sub_tree";b:0;s:8:"position";i:36;}i:2;a:4:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:12:"'this_model'";s:8:"sub_tree";b:0;s:8:"position";i:37;}}s:5:"ORDER";a:1:{i:0;a:6:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:6:"`test`";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:4:"test";}}s:8:"sub_tree";b:0;s:9:"direction";s:3:"ASC";s:8:"position";i:59;}}} \ No newline at end of file +a:4:{s:6:"SELECT";a:1:{i:0;a:6:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:1:"*";s:8:"sub_tree";b:0;s:5:"delim";b:0;s:8:"position";i:7;}}s:4:"FROM";a:1:{i:0;a:11:{s:9:"expr_type";s:5:"table";s:5:"table";s:7:"`model`";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:5:"model";}}s:5:"alias";b:0;s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:7:"`model`";s:8:"sub_tree";b:0;s:8:"position";i:14;}}s:5:"WHERE";a:3:{i:0;a:5:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:8:"`marker`";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:6:"marker";}}s:8:"sub_tree";b:0;s:8:"position";i:28;}i:1;a:4:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";s:8:"sub_tree";b:0;s:8:"position";i:36;}i:2;a:4:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:12:"'this_model'";s:8:"sub_tree";b:0;s:8:"position";i:37;}}s:5:"ORDER";a:1:{i:0;a:6:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:6:"`test`";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:4:"test";}}s:8:"sub_tree";b:0;s:9:"direction";s:3:"ASC";s:8:"position";i:59;}}} \ No newline at end of file diff --git a/tests/expected/parser/issue80b.serialized b/tests/expected/parser/issue80b.serialized index f51bc445..d488201d 100644 --- a/tests/expected/parser/issue80b.serialized +++ b/tests/expected/parser/issue80b.serialized @@ -1 +1 @@ -a:4:{s:6:"SELECT";a:1:{i:0;a:6:{s:9:"expr_type";s:10:"expression";s:5:"alias";a:5:{s:2:"as";b:0;s:4:"name";s:6:"`test`";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:4:"test";}}s:9:"base_expr";s:6:"`test`";s:8:"position";i:11;}s:9:"base_expr";s:3:"x+3";s:8:"sub_tree";a:3:{i:0;a:5:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:1:"x";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"x";}}s:8:"sub_tree";b:0;s:8:"position";i:7;}i:1;a:4:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"+";s:8:"sub_tree";b:0;s:8:"position";i:8;}i:2;a:4:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:1:"3";s:8:"sub_tree";b:0;s:8:"position";i:9;}}s:5:"delim";b:0;s:8:"position";i:7;}}s:4:"FROM";a:1:{i:0;a:10:{s:9:"expr_type";s:5:"table";s:5:"table";s:7:"`model`";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:5:"model";}}s:5:"alias";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:7:"`model`";s:8:"sub_tree";b:0;s:8:"position";i:23;}}s:5:"WHERE";a:3:{i:0;a:5:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:8:"`marker`";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:6:"marker";}}s:8:"sub_tree";b:0;s:8:"position";i:37;}i:1;a:4:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";s:8:"sub_tree";b:0;s:8:"position";i:45;}i:2;a:4:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:12:"'this_model'";s:8:"sub_tree";b:0;s:8:"position";i:46;}}s:5:"ORDER";a:1:{i:0;a:5:{s:9:"expr_type";s:5:"alias";s:9:"base_expr";s:6:"`test`";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:4:"test";}}s:9:"direction";s:3:"ASC";s:8:"position";i:68;}}} \ No newline at end of file +a:4:{s:6:"SELECT";a:1:{i:0;a:6:{s:9:"expr_type";s:10:"expression";s:5:"alias";a:5:{s:2:"as";b:0;s:4:"name";s:6:"`test`";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:4:"test";}}s:9:"base_expr";s:6:"`test`";s:8:"position";i:11;}s:9:"base_expr";s:10:"x+3 `test`";s:8:"sub_tree";a:3:{i:0;a:5:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:1:"x";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"x";}}s:8:"sub_tree";b:0;s:8:"position";i:7;}i:1;a:4:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"+";s:8:"sub_tree";b:0;s:8:"position";i:8;}i:2;a:4:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:1:"3";s:8:"sub_tree";b:0;s:8:"position";i:9;}}s:5:"delim";b:0;s:8:"position";i:7;}}s:4:"FROM";a:1:{i:0;a:11:{s:9:"expr_type";s:5:"table";s:5:"table";s:7:"`model`";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:5:"model";}}s:5:"alias";b:0;s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:7:"`model`";s:8:"sub_tree";b:0;s:8:"position";i:23;}}s:5:"WHERE";a:3:{i:0;a:5:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:8:"`marker`";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:6:"marker";}}s:8:"sub_tree";b:0;s:8:"position";i:37;}i:1;a:4:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";s:8:"sub_tree";b:0;s:8:"position";i:45;}i:2;a:4:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:12:"'this_model'";s:8:"sub_tree";b:0;s:8:"position";i:46;}}s:5:"ORDER";a:1:{i:0;a:5:{s:9:"expr_type";s:5:"alias";s:9:"base_expr";s:6:"`test`";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:4:"test";}}s:9:"direction";s:3:"ASC";s:8:"position";i:68;}}} \ No newline at end of file diff --git a/tests/expected/parser/issue82.serialized b/tests/expected/parser/issue82.serialized index 8a983834..1e46fe07 100644 --- a/tests/expected/parser/issue82.serialized +++ b/tests/expected/parser/issue82.serialized @@ -1 +1 @@ -a:1:{s:6:"SELECT";a:1:{i:0;a:5:{s:9:"expr_type";s:10:"expression";s:5:"alias";a:4:{s:2:"as";b:1;s:4:"name";s:6:"number";s:9:"base_expr";s:9:"as number";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:6:"number";}}}s:9:"base_expr";s:12:"SUM(1) * 100";s:8:"sub_tree";a:3:{i:0;a:3:{s:9:"expr_type";s:18:"aggregate_function";s:9:"base_expr";s:3:"SUM";s:8:"sub_tree";a:1:{i:0;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:1:"1";s:8:"sub_tree";b:0;}}}i:1;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"*";s:8:"sub_tree";b:0;}i:2;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:3:"100";s:8:"sub_tree";b:0;}}s:5:"delim";b:0;}}} \ No newline at end of file +a:1:{s:6:"SELECT";a:1:{i:0;a:5:{s:9:"expr_type";s:10:"expression";s:5:"alias";a:4:{s:2:"as";b:1;s:4:"name";s:6:"number";s:9:"base_expr";s:9:"as number";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:6:"number";}}}s:9:"base_expr";s:22:"SUM(1) * 100 as number";s:8:"sub_tree";a:3:{i:0;a:3:{s:9:"expr_type";s:18:"aggregate_function";s:9:"base_expr";s:3:"SUM";s:8:"sub_tree";a:1:{i:0;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:1:"1";s:8:"sub_tree";b:0;}}}i:1;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"*";s:8:"sub_tree";b:0;}i:2;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:3:"100";s:8:"sub_tree";b:0;}}s:5:"delim";b:0;}}} \ No newline at end of file diff --git a/tests/expected/parser/issue84a.serialized b/tests/expected/parser/issue84a.serialized index f45f53cf..1ebcf689 100644 --- a/tests/expected/parser/issue84a.serialized +++ b/tests/expected/parser/issue84a.serialized @@ -1 +1 @@ -a:4:{s:6:"INSERT";a:2:{i:0;a:3:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:4:"INTO";s:8:"position";i:7;}i:1;a:6:{s:9:"expr_type";s:5:"table";s:5:"table";s:12:"newTablename";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:12:"newTablename";}}s:5:"alias";b:0;s:9:"base_expr";s:12:"newTablename";s:8:"position";i:12;}}s:6:"SELECT";a:3:{i:0;a:7:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:6:"field1";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:6:"field1";}}s:8:"sub_tree";b:0;s:5:"delim";s:1:",";s:8:"position";i:32;}i:1;a:7:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:6:"field2";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:6:"field2";}}s:8:"sub_tree";b:0;s:5:"delim";s:1:",";s:8:"position";i:40;}i:2;a:7:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:6:"field3";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:6:"field3";}}s:8:"sub_tree";b:0;s:5:"delim";b:0;s:8:"position";i:48;}}s:4:"FROM";a:1:{i:0;a:10:{s:9:"expr_type";s:5:"table";s:5:"table";s:12:"oldTablename";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:12:"oldTablename";}}s:5:"alias";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:12:"oldTablename";s:8:"sub_tree";b:0;s:8:"position";i:60;}}s:5:"WHERE";a:3:{i:0;a:5:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:6:"field1";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:6:"field1";}}s:8:"sub_tree";b:0;s:8:"position";i:79;}i:1;a:4:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:">";s:8:"sub_tree";b:0;s:8:"position";i:86;}i:2;a:4:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:3:"100";s:8:"sub_tree";b:0;s:8:"position";i:88;}}} \ No newline at end of file +a:4:{s:6:"INSERT";a:2:{i:0;a:3:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:4:"INTO";s:8:"position";i:7;}i:1;a:6:{s:9:"expr_type";s:5:"table";s:5:"table";s:12:"newTablename";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:12:"newTablename";}}s:5:"alias";b:0;s:9:"base_expr";s:12:"newTablename";s:8:"position";i:12;}}s:6:"SELECT";a:3:{i:0;a:7:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:6:"field1";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:6:"field1";}}s:8:"sub_tree";b:0;s:5:"delim";s:1:",";s:8:"position";i:32;}i:1;a:7:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:6:"field2";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:6:"field2";}}s:8:"sub_tree";b:0;s:5:"delim";s:1:",";s:8:"position";i:40;}i:2;a:7:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:6:"field3";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:6:"field3";}}s:8:"sub_tree";b:0;s:5:"delim";b:0;s:8:"position";i:48;}}s:4:"FROM";a:1:{i:0;a:11:{s:9:"expr_type";s:5:"table";s:5:"table";s:12:"oldTablename";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:12:"oldTablename";}}s:5:"alias";b:0;s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:12:"oldTablename";s:8:"sub_tree";b:0;s:8:"position";i:60;}}s:5:"WHERE";a:3:{i:0;a:5:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:6:"field1";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:6:"field1";}}s:8:"sub_tree";b:0;s:8:"position";i:79;}i:1;a:4:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:">";s:8:"sub_tree";b:0;s:8:"position";i:86;}i:2;a:4:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:3:"100";s:8:"sub_tree";b:0;s:8:"position";i:88;}}} \ No newline at end of file diff --git a/tests/expected/parser/issue84b.serialized b/tests/expected/parser/issue84b.serialized index 4198f74a..b959775c 100644 --- a/tests/expected/parser/issue84b.serialized +++ b/tests/expected/parser/issue84b.serialized @@ -1 +1 @@ -a:1:{s:6:"INSERT";a:3:{i:0;a:3:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:4:"INTO";s:8:"position";i:7;}i:1;a:6:{s:9:"expr_type";s:5:"table";s:5:"table";s:12:"newTablename";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:12:"newTablename";}}s:5:"alias";b:0;s:9:"base_expr";s:12:"newTablename";s:8:"position";i:12;}i:2;a:4:{s:9:"expr_type";s:18:"bracket_expression";s:9:"base_expr";s:68:"(SELECT field1, field2, field3 FROM oldTablename where field1 > 100)";s:8:"sub_tree";a:1:{i:0;a:4:{s:9:"expr_type";s:5:"query";s:9:"base_expr";s:66:"SELECT field1, field2, field3 FROM oldTablename where field1 > 100";s:8:"sub_tree";a:3:{s:6:"SELECT";a:3:{i:0;a:7:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:6:"field1";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:6:"field1";}}s:8:"sub_tree";b:0;s:5:"delim";s:1:",";s:8:"position";i:33;}i:1;a:7:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:6:"field2";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:6:"field2";}}s:8:"sub_tree";b:0;s:5:"delim";s:1:",";s:8:"position";i:41;}i:2;a:7:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:6:"field3";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:6:"field3";}}s:8:"sub_tree";b:0;s:5:"delim";b:0;s:8:"position";i:49;}}s:4:"FROM";a:1:{i:0;a:10:{s:9:"expr_type";s:5:"table";s:5:"table";s:12:"oldTablename";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:12:"oldTablename";}}s:5:"alias";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:12:"oldTablename";s:8:"sub_tree";b:0;s:8:"position";i:61;}}s:5:"WHERE";a:3:{i:0;a:5:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:6:"field1";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:6:"field1";}}s:8:"sub_tree";b:0;s:8:"position";i:80;}i:1;a:4:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:">";s:8:"sub_tree";b:0;s:8:"position";i:87;}i:2;a:4:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:3:"100";s:8:"sub_tree";b:0;s:8:"position";i:89;}}}s:8:"position";i:26;}}s:8:"position";i:25;}}} \ No newline at end of file +a:1:{s:6:"INSERT";a:3:{i:0;a:3:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:4:"INTO";s:8:"position";i:7;}i:1;a:6:{s:9:"expr_type";s:5:"table";s:5:"table";s:12:"newTablename";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:12:"newTablename";}}s:5:"alias";b:0;s:9:"base_expr";s:12:"newTablename";s:8:"position";i:12;}i:2;a:4:{s:9:"expr_type";s:18:"bracket_expression";s:9:"base_expr";s:68:"(SELECT field1, field2, field3 FROM oldTablename where field1 > 100)";s:8:"sub_tree";a:1:{i:0;a:4:{s:9:"expr_type";s:5:"query";s:9:"base_expr";s:66:"SELECT field1, field2, field3 FROM oldTablename where field1 > 100";s:8:"sub_tree";a:3:{s:6:"SELECT";a:3:{i:0;a:7:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:6:"field1";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:6:"field1";}}s:8:"sub_tree";b:0;s:5:"delim";s:1:",";s:8:"position";i:33;}i:1;a:7:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:6:"field2";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:6:"field2";}}s:8:"sub_tree";b:0;s:5:"delim";s:1:",";s:8:"position";i:41;}i:2;a:7:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:6:"field3";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:6:"field3";}}s:8:"sub_tree";b:0;s:5:"delim";b:0;s:8:"position";i:49;}}s:4:"FROM";a:1:{i:0;a:11:{s:9:"expr_type";s:5:"table";s:5:"table";s:12:"oldTablename";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:12:"oldTablename";}}s:5:"alias";b:0;s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:12:"oldTablename";s:8:"sub_tree";b:0;s:8:"position";i:61;}}s:5:"WHERE";a:3:{i:0;a:5:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:6:"field1";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:6:"field1";}}s:8:"sub_tree";b:0;s:8:"position";i:80;}i:1;a:4:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:">";s:8:"sub_tree";b:0;s:8:"position";i:87;}i:2;a:4:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:3:"100";s:8:"sub_tree";b:0;s:8:"position";i:89;}}}s:8:"position";i:26;}}s:8:"position";i:25;}}} \ No newline at end of file diff --git a/tests/expected/parser/issue91.serialized b/tests/expected/parser/issue91.serialized index d3f32457..6e374592 100644 --- a/tests/expected/parser/issue91.serialized +++ b/tests/expected/parser/issue91.serialized @@ -1 +1 @@ -a:2:{s:6:"SELECT";a:2:{i:0;a:5:{s:9:"expr_type";s:8:"reserved";s:5:"alias";b:0;s:9:"base_expr";s:8:"DISTINCT";s:8:"sub_tree";b:0;s:5:"delim";s:1:" ";}i:1;a:5:{s:9:"expr_type";s:10:"expression";s:5:"alias";b:0;s:9:"base_expr";s:11:"colA * colB";s:8:"sub_tree";a:3:{i:0;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:4:"colA";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:4:"colA";}}s:8:"sub_tree";b:0;}i:1;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"*";s:8:"sub_tree";b:0;}i:2;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:4:"colB";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:4:"colB";}}s:8:"sub_tree";b:0;}}s:5:"delim";b:0;}}s:4:"FROM";a:1:{i:0;a:9:{s:9:"expr_type";s:5:"table";s:5:"table";s:4:"test";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:4:"test";}}s:5:"alias";a:4:{s:2:"as";b:0;s:4:"name";s:1:"t";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"t";}}s:9:"base_expr";s:1:"t";}s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:6:"test t";s:8:"sub_tree";b:0;}}} \ No newline at end of file +a:2:{s:6:"SELECT";a:2:{i:0;a:5:{s:9:"expr_type";s:8:"reserved";s:5:"alias";b:0;s:9:"base_expr";s:8:"DISTINCT";s:8:"sub_tree";b:0;s:5:"delim";s:1:" ";}i:1;a:5:{s:9:"expr_type";s:10:"expression";s:5:"alias";b:0;s:9:"base_expr";s:11:"colA * colB";s:8:"sub_tree";a:3:{i:0;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:4:"colA";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:4:"colA";}}s:8:"sub_tree";b:0;}i:1;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"*";s:8:"sub_tree";b:0;}i:2;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:4:"colB";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:4:"colB";}}s:8:"sub_tree";b:0;}}s:5:"delim";b:0;}}s:4:"FROM";a:1:{i:0;a:10:{s:9:"expr_type";s:5:"table";s:5:"table";s:4:"test";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:4:"test";}}s:5:"alias";a:4:{s:2:"as";b:0;s:4:"name";s:1:"t";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"t";}}s:9:"base_expr";s:1:"t";}s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:6:"test t";s:8:"sub_tree";b:0;}}} \ No newline at end of file diff --git a/tests/expected/parser/issue94.serialized b/tests/expected/parser/issue94.serialized index 9ed5b051..b3edc690 100644 --- a/tests/expected/parser/issue94.serialized +++ b/tests/expected/parser/issue94.serialized @@ -1 +1,2 @@ -a:1:{s:6:"SELECT";a:1:{i:0;a:5:{s:9:"expr_type";s:8:"function";s:5:"alias";a:4:{s:2:"as";b:1;s:4:"name";s:10:"next_month";s:9:"base_expr";s:13:"AS next_month";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:10:"next_month";}}}s:9:"base_expr";s:8:"DATE_ADD";s:8:"sub_tree";a:2:{i:0;a:3:{s:9:"expr_type";s:8:"function";s:9:"base_expr";s:3:"NOW";s:8:"sub_tree";b:0;}i:1;a:4:{s:9:"expr_type";s:10:"expression";s:9:"base_expr";s:17:" INTERVAL 1 MONTH";s:8:"sub_tree";a:3:{i:0;a:3:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:8:"INTERVAL";s:8:"sub_tree";b:0;}i:1;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:1:"1";s:8:"sub_tree";b:0;}i:2;a:3:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:5:"MONTH";s:8:"sub_tree";b:0;}}s:5:"alias";b:0;}}s:5:"delim";b:0;}}} \ No newline at end of file +a:1:{s:6:"SELECT";a:1:{i:0;a:5:{s:9:"expr_type";s:8:"function";s:5:"alias";a:4:{s:2:"as";b:1;s:4:"name";s:10:"next_month";s:9:"base_expr";s:13:"AS next_month";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:10:"next_month";}}}s:9:"base_expr";s:8:"DATE_ADD";s:8:"sub_tree";a:2:{i:0;a:3:{s:9:"expr_type";s:8:"function";s:9:"base_expr";s:3:"NOW";s:8:"sub_tree";b:0;}i:1;a:4:{s:9:"expr_type";s:10:"expression";s:9:"base_expr";s:17:" INTERVAL 1 MONTH";s:8:"sub_tree";a:3:{i:0;a:3:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:8:"INTERVAL";s:8:"sub_tree";b:0;}i:1;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:1:"1";s:8:"sub_tree";b:0;}i:2;a:3:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:5:"MONTH";s:8:"sub_tree";b:0;}}s:5:"alias";b:0;}}s:5:"delim";b:0;}}} +a:1:{s:6:"SELECT";a:1:{i:0;a:5:{s:9:"expr_type";s:8:"function";s:5:"alias";a:4:{s:2:"as";b:1;s:4:"name";s:10:"next_month";s:9:"base_expr";s:13:"AS next_month";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:10:"next_month";}}}s:9:"base_expr";s:8:"DATE_ADD";s:8:"sub_tree";a:2:{i:0;a:3:{s:9:"expr_type";s:8:"function";s:9:"base_expr";s:3:"NOW";s:8:"sub_tree";a:0:{}}i:1;a:4:{s:9:"expr_type";s:10:"expression";s:9:"base_expr";s:17:" INTERVAL 1 MONTH";s:8:"sub_tree";a:3:{i:0;a:3:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:8:"INTERVAL";s:8:"sub_tree";b:0;}i:1;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:1:"1";s:8:"sub_tree";b:0;}i:2;a:3:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:5:"MONTH";s:8:"sub_tree";b:0;}}s:5:"alias";b:0;}}s:5:"delim";b:0;}}} \ No newline at end of file diff --git a/tests/expected/parser/issue97.serialized b/tests/expected/parser/issue97.serialized index 9c4b2256..56473ba7 100644 --- a/tests/expected/parser/issue97.serialized +++ b/tests/expected/parser/issue97.serialized @@ -1 +1 @@ -a:3:{s:6:"SELECT";a:2:{i:0;a:6:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:5:"webid";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:5:"webid";}}s:8:"sub_tree";b:0;s:5:"delim";s:1:",";}i:1;a:5:{s:9:"expr_type";s:8:"function";s:5:"alias";a:4:{s:2:"as";b:1;s:4:"name";s:2:"fl";s:9:"base_expr";s:5:"as fl";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:2:"fl";}}}s:9:"base_expr";s:5:"floor";s:8:"sub_tree";a:1:{i:0;a:4:{s:9:"expr_type";s:10:"expression";s:9:"base_expr";s:5:"iz/2.";s:8:"sub_tree";a:3:{i:0;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:2:"iz";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:2:"iz";}}s:8:"sub_tree";b:0;}i:1;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"/";s:8:"sub_tree";b:0;}i:2;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:2:"2.";s:8:"sub_tree";b:0;}}s:5:"alias";b:0;}}s:5:"delim";b:0;}}s:4:"FROM";a:1:{i:0;a:9:{s:9:"expr_type";s:5:"table";s:5:"table";s:12:"MDR1.Tweb512";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:4:"MDR1";i:1;s:7:"Tweb512";}}s:5:"alias";a:4:{s:2:"as";b:1;s:4:"name";s:1:"w";s:9:"base_expr";s:4:"as w";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"w";}}}s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:17:"MDR1.Tweb512 as w";s:8:"sub_tree";b:0;}}s:5:"WHERE";a:3:{i:0;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:7:"w.webid";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:1:"w";i:1;s:5:"webid";}}s:8:"sub_tree";b:0;}i:1;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"<";s:8:"sub_tree";b:0;}i:2;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:3:"100";s:8:"sub_tree";b:0;}}} \ No newline at end of file +a:3:{s:6:"SELECT";a:2:{i:0;a:6:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:5:"webid";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:5:"webid";}}s:8:"sub_tree";b:0;s:5:"delim";s:1:",";}i:1;a:5:{s:9:"expr_type";s:8:"function";s:5:"alias";a:4:{s:2:"as";b:1;s:4:"name";s:2:"fl";s:9:"base_expr";s:5:"as fl";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:2:"fl";}}}s:9:"base_expr";s:5:"floor";s:8:"sub_tree";a:1:{i:0;a:4:{s:9:"expr_type";s:10:"expression";s:9:"base_expr";s:5:"iz/2.";s:8:"sub_tree";a:3:{i:0;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:2:"iz";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:2:"iz";}}s:8:"sub_tree";b:0;}i:1;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"/";s:8:"sub_tree";b:0;}i:2;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:2:"2.";s:8:"sub_tree";b:0;}}s:5:"alias";b:0;}}s:5:"delim";b:0;}}s:4:"FROM";a:1:{i:0;a:10:{s:9:"expr_type";s:5:"table";s:5:"table";s:12:"MDR1.Tweb512";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:4:"MDR1";i:1;s:7:"Tweb512";}}s:5:"alias";a:4:{s:2:"as";b:1;s:4:"name";s:1:"w";s:9:"base_expr";s:4:"as w";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"w";}}}s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:17:"MDR1.Tweb512 as w";s:8:"sub_tree";b:0;}}s:5:"WHERE";a:3:{i:0;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:7:"w.webid";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:1:"w";i:1;s:5:"webid";}}s:8:"sub_tree";b:0;}i:1;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"<";s:8:"sub_tree";b:0;}i:2;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:3:"100";s:8:"sub_tree";b:0;}}} \ No newline at end of file diff --git a/tests/expected/parser/issue98.serialized b/tests/expected/parser/issue98.serialized index 3ccb4531..18ee30c0 100644 --- a/tests/expected/parser/issue98.serialized +++ b/tests/expected/parser/issue98.serialized @@ -1 +1 @@ -a:3:{s:6:"SELECT";a:2:{i:0;a:6:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:5:"webid";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:5:"webid";}}s:8:"sub_tree";b:0;s:5:"delim";s:1:",";}i:1;a:5:{s:9:"expr_type";s:8:"function";s:5:"alias";a:4:{s:2:"as";b:1;s:4:"name";s:4:"`fl`";s:9:"base_expr";s:7:"as `fl`";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:2:"fl";}}}s:9:"base_expr";s:5:"floor";s:8:"sub_tree";a:1:{i:0;a:4:{s:9:"expr_type";s:10:"expression";s:9:"base_expr";s:5:"iz/2.";s:8:"sub_tree";a:3:{i:0;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:2:"iz";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:2:"iz";}}s:8:"sub_tree";b:0;}i:1;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"/";s:8:"sub_tree";b:0;}i:2;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:2:"2.";s:8:"sub_tree";b:0;}}s:5:"alias";b:0;}}s:5:"delim";b:0;}}s:4:"FROM";a:1:{i:0;a:9:{s:9:"expr_type";s:5:"table";s:5:"table";s:12:"MDR1.Tweb512";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:4:"MDR1";i:1;s:7:"Tweb512";}}s:5:"alias";a:4:{s:2:"as";b:1;s:4:"name";s:3:"`w`";s:9:"base_expr";s:6:"as `w`";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"w";}}}s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:19:"MDR1.Tweb512 as `w`";s:8:"sub_tree";b:0;}}s:5:"WHERE";a:3:{i:0;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:7:"w.webid";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:1:"w";i:1;s:5:"webid";}}s:8:"sub_tree";b:0;}i:1;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"<";s:8:"sub_tree";b:0;}i:2;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:3:"100";s:8:"sub_tree";b:0;}}} \ No newline at end of file +a:3:{s:6:"SELECT";a:2:{i:0;a:6:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:5:"webid";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:5:"webid";}}s:8:"sub_tree";b:0;s:5:"delim";s:1:",";}i:1;a:5:{s:9:"expr_type";s:8:"function";s:5:"alias";a:4:{s:2:"as";b:1;s:4:"name";s:4:"`fl`";s:9:"base_expr";s:7:"as `fl`";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:2:"fl";}}}s:9:"base_expr";s:5:"floor";s:8:"sub_tree";a:1:{i:0;a:4:{s:9:"expr_type";s:10:"expression";s:9:"base_expr";s:5:"iz/2.";s:8:"sub_tree";a:3:{i:0;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:2:"iz";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:2:"iz";}}s:8:"sub_tree";b:0;}i:1;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"/";s:8:"sub_tree";b:0;}i:2;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:2:"2.";s:8:"sub_tree";b:0;}}s:5:"alias";b:0;}}s:5:"delim";b:0;}}s:4:"FROM";a:1:{i:0;a:10:{s:9:"expr_type";s:5:"table";s:5:"table";s:12:"MDR1.Tweb512";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:4:"MDR1";i:1;s:7:"Tweb512";}}s:5:"alias";a:4:{s:2:"as";b:1;s:4:"name";s:3:"`w`";s:9:"base_expr";s:6:"as `w`";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"w";}}}s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:19:"MDR1.Tweb512 as `w`";s:8:"sub_tree";b:0;}}s:5:"WHERE";a:3:{i:0;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:7:"w.webid";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:1:"w";i:1;s:5:"webid";}}s:8:"sub_tree";b:0;}i:1;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"<";s:8:"sub_tree";b:0;}i:2;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:3:"100";s:8:"sub_tree";b:0;}}} \ No newline at end of file diff --git a/tests/expected/parser/left1.serialized b/tests/expected/parser/left1.serialized index 401ca6e4..5b6d5c7e 100644 --- a/tests/expected/parser/left1.serialized +++ b/tests/expected/parser/left1.serialized @@ -1 +1 @@ -a:2:{s:6:"SELECT";a:3:{i:0;a:7:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:8:"a.field1";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:1:"a";i:1;s:6:"field1";}}s:8:"sub_tree";b:0;s:5:"delim";s:1:",";s:8:"position";i:7;}i:1;a:7:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:8:"b.field1";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:1:"b";i:1;s:6:"field1";}}s:8:"sub_tree";b:0;s:5:"delim";s:1:",";s:8:"position";i:17;}i:2;a:7:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:8:"c.field1";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:1:"c";i:1;s:6:"field1";}}s:8:"sub_tree";b:0;s:5:"delim";b:0;s:8:"position";i:27;}}s:4:"FROM";a:3:{i:0;a:10:{s:9:"expr_type";s:5:"table";s:5:"table";s:6:"tablea";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:6:"tablea";}}s:5:"alias";a:5:{s:2:"as";b:0;s:4:"name";s:1:"a";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"a";}}s:9:"base_expr";s:1:"a";s:8:"position";i:50;}s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:8:"tablea a";s:8:"sub_tree";b:0;s:8:"position";i:43;}i:1;a:10:{s:9:"expr_type";s:5:"table";s:5:"table";s:6:"tableb";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:6:"tableb";}}s:5:"alias";a:5:{s:2:"as";b:0;s:4:"name";s:1:"b";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"b";}}s:9:"base_expr";s:1:"b";s:8:"position";i:72;}s:9:"join_type";s:4:"LEFT";s:8:"ref_type";s:2:"ON";s:10:"ref_clause";a:3:{i:0;a:5:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:5:"b.ida";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:1:"b";i:1;s:3:"ida";}}s:8:"sub_tree";b:0;s:8:"position";i:77;}i:1;a:4:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";s:8:"sub_tree";b:0;s:8:"position";i:83;}i:2;a:5:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:4:"a.id";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:1:"a";i:1;s:2:"id";}}s:8:"sub_tree";b:0;s:8:"position";i:85;}}s:9:"base_expr";s:24:"tableb b ON b.ida = a.id";s:8:"sub_tree";b:0;s:8:"position";i:65;}i:2;a:10:{s:9:"expr_type";s:5:"table";s:5:"table";s:6:"tablec";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:6:"tablec";}}s:5:"alias";a:5:{s:2:"as";b:0;s:4:"name";s:1:"c";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"c";}}s:9:"base_expr";s:1:"c";s:8:"position";i:109;}s:9:"join_type";s:4:"LEFT";s:8:"ref_type";s:2:"ON";s:10:"ref_clause";a:3:{i:0;a:5:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:5:"c.idb";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:1:"c";i:1;s:3:"idb";}}s:8:"sub_tree";b:0;s:8:"position";i:114;}i:1;a:4:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";s:8:"sub_tree";b:0;s:8:"position";i:120;}i:2;a:5:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:4:"b.id";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:1:"b";i:1;s:2:"id";}}s:8:"sub_tree";b:0;s:8:"position";i:122;}}s:9:"base_expr";s:24:"tablec c ON c.idb = b.id";s:8:"sub_tree";b:0;s:8:"position";i:102;}}} \ No newline at end of file +a:2:{s:6:"SELECT";a:3:{i:0;a:7:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:8:"a.field1";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:1:"a";i:1;s:6:"field1";}}s:8:"sub_tree";b:0;s:5:"delim";s:1:",";s:8:"position";i:7;}i:1;a:7:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:8:"b.field1";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:1:"b";i:1;s:6:"field1";}}s:8:"sub_tree";b:0;s:5:"delim";s:1:",";s:8:"position";i:17;}i:2;a:7:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:8:"c.field1";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:1:"c";i:1;s:6:"field1";}}s:8:"sub_tree";b:0;s:5:"delim";b:0;s:8:"position";i:27;}}s:4:"FROM";a:3:{i:0;a:11:{s:9:"expr_type";s:5:"table";s:5:"table";s:6:"tablea";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:6:"tablea";}}s:5:"alias";a:5:{s:2:"as";b:0;s:4:"name";s:1:"a";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"a";}}s:9:"base_expr";s:1:"a";s:8:"position";i:50;}s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:8:"tablea a";s:8:"sub_tree";b:0;s:8:"position";i:43;}i:1;a:11:{s:9:"expr_type";s:5:"table";s:5:"table";s:6:"tableb";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:6:"tableb";}}s:5:"alias";a:5:{s:2:"as";b:0;s:4:"name";s:1:"b";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"b";}}s:9:"base_expr";s:1:"b";s:8:"position";i:72;}s:5:"hints";b:0;s:9:"join_type";s:4:"LEFT";s:8:"ref_type";s:2:"ON";s:10:"ref_clause";a:3:{i:0;a:5:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:5:"b.ida";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:1:"b";i:1;s:3:"ida";}}s:8:"sub_tree";b:0;s:8:"position";i:77;}i:1;a:4:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";s:8:"sub_tree";b:0;s:8:"position";i:83;}i:2;a:5:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:4:"a.id";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:1:"a";i:1;s:2:"id";}}s:8:"sub_tree";b:0;s:8:"position";i:85;}}s:9:"base_expr";s:24:"tableb b ON b.ida = a.id";s:8:"sub_tree";b:0;s:8:"position";i:65;}i:2;a:11:{s:9:"expr_type";s:5:"table";s:5:"table";s:6:"tablec";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:6:"tablec";}}s:5:"alias";a:5:{s:2:"as";b:0;s:4:"name";s:1:"c";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"c";}}s:9:"base_expr";s:1:"c";s:8:"position";i:109;}s:5:"hints";b:0;s:9:"join_type";s:4:"LEFT";s:8:"ref_type";s:2:"ON";s:10:"ref_clause";a:3:{i:0;a:5:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:5:"c.idb";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:1:"c";i:1;s:3:"idb";}}s:8:"sub_tree";b:0;s:8:"position";i:114;}i:1;a:4:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";s:8:"sub_tree";b:0;s:8:"position";i:120;}i:2;a:5:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:4:"b.id";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:1:"b";i:1;s:2:"id";}}s:8:"sub_tree";b:0;s:8:"position";i:122;}}s:9:"base_expr";s:24:"tablec c ON c.idb = b.id";s:8:"sub_tree";b:0;s:8:"position";i:102;}}} \ No newline at end of file diff --git a/tests/expected/parser/left2.serialized b/tests/expected/parser/left2.serialized index c6430eae..fc0d99f5 100644 --- a/tests/expected/parser/left2.serialized +++ b/tests/expected/parser/left2.serialized @@ -1 +1 @@ -a:2:{s:6:"SELECT";a:3:{i:0;a:6:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:8:"a.field1";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:1:"a";i:1;s:6:"field1";}}s:8:"sub_tree";b:0;s:5:"delim";s:1:",";}i:1;a:6:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:8:"b.field1";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:1:"b";i:1;s:6:"field1";}}s:8:"sub_tree";b:0;s:5:"delim";s:1:",";}i:2;a:6:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:8:"c.field1";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:1:"c";i:1;s:6:"field1";}}s:8:"sub_tree";b:0;s:5:"delim";b:0;}}s:4:"FROM";a:7:{i:0;a:9:{s:9:"expr_type";s:5:"table";s:5:"table";s:6:"tablea";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:6:"tablea";}}s:5:"alias";a:4:{s:2:"as";b:0;s:4:"name";s:1:"a";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"a";}}s:9:"base_expr";s:1:"a";}s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:8:"tablea a";s:8:"sub_tree";b:0;}i:1;a:9:{s:9:"expr_type";s:5:"table";s:5:"table";s:6:"tableb";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:6:"tableb";}}s:5:"alias";a:4:{s:2:"as";b:0;s:4:"name";s:1:"b";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"b";}}s:9:"base_expr";s:1:"b";}s:9:"join_type";s:4:"LEFT";s:8:"ref_type";s:2:"ON";s:10:"ref_clause";a:3:{i:0;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:5:"b.ida";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:1:"b";i:1;s:3:"ida";}}s:8:"sub_tree";b:0;}i:1;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";s:8:"sub_tree";b:0;}i:2;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:4:"a.id";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:1:"a";i:1;s:2:"id";}}s:8:"sub_tree";b:0;}}s:9:"base_expr";s:24:"tableb b ON b.ida = a.id";s:8:"sub_tree";b:0;}i:2;a:9:{s:9:"expr_type";s:5:"table";s:5:"table";s:6:"tablec";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:6:"tablec";}}s:5:"alias";a:4:{s:2:"as";b:0;s:4:"name";s:1:"c";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"c";}}s:9:"base_expr";s:1:"c";}s:9:"join_type";s:5:"RIGHT";s:8:"ref_type";s:2:"ON";s:10:"ref_clause";a:3:{i:0;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:5:"c.idb";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:1:"c";i:1;s:3:"idb";}}s:8:"sub_tree";b:0;}i:1;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";s:8:"sub_tree";b:0;}i:2;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:4:"b.id";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:1:"b";i:1;s:2:"id";}}s:8:"sub_tree";b:0;}}s:9:"base_expr";s:24:"tablec c ON c.idb = b.id";s:8:"sub_tree";b:0;}i:3;a:9:{s:9:"expr_type";s:5:"table";s:5:"table";s:6:"tabled";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:6:"tabled";}}s:5:"alias";a:4:{s:2:"as";b:0;s:4:"name";s:1:"d";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"d";}}s:9:"base_expr";s:1:"d";}s:9:"join_type";s:4:"JOIN";s:8:"ref_type";s:5:"USING";s:10:"ref_clause";a:1:{i:0;a:3:{s:9:"expr_type";s:18:"bracket_expression";s:9:"base_expr";s:6:"(d_id)";s:8:"sub_tree";a:1:{i:0;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:4:"d_id";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:4:"d_id";}}s:8:"sub_tree";b:0;}}}}s:9:"base_expr";s:21:"tabled d USING (d_id)";s:8:"sub_tree";b:0;}i:4;a:9:{s:9:"expr_type";s:5:"table";s:5:"table";s:1:"e";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"e";}}s:5:"alias";b:0;s:9:"join_type";s:5:"RIGHT";s:8:"ref_type";s:2:"ON";s:10:"ref_clause";a:3:{i:0;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:4:"e.id";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:1:"e";i:1;s:2:"id";}}s:8:"sub_tree";b:0;}i:1;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";s:8:"sub_tree";b:0;}i:2;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:6:"a.e_id";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:1:"a";i:1;s:4:"e_id";}}s:8:"sub_tree";b:0;}}s:9:"base_expr";s:18:"e on e.id = a.e_id";s:8:"sub_tree";b:0;}i:5;a:9:{s:9:"expr_type";s:5:"table";s:5:"table";s:1:"e";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"e";}}s:5:"alias";a:4:{s:2:"as";b:0;s:4:"name";s:2:"e2";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:2:"e2";}}s:9:"base_expr";s:2:"e2";}s:9:"join_type";s:4:"LEFT";s:8:"ref_type";s:5:"USING";s:10:"ref_clause";a:1:{i:0;a:3:{s:9:"expr_type";s:18:"bracket_expression";s:9:"base_expr";s:6:"(e_id)";s:8:"sub_tree";a:1:{i:0;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:4:"e_id";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:4:"e_id";}}s:8:"sub_tree";b:0;}}}}s:9:"base_expr";s:17:"e e2 using (e_id)";s:8:"sub_tree";b:0;}i:6;a:9:{s:9:"expr_type";s:5:"table";s:5:"table";s:1:"e";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"e";}}s:5:"alias";a:4:{s:2:"as";b:0;s:4:"name";s:2:"e3";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:2:"e3";}}s:9:"base_expr";s:2:"e3";}s:9:"join_type";s:4:"JOIN";s:8:"ref_type";s:2:"ON";s:10:"ref_clause";a:1:{i:0;a:3:{s:9:"expr_type";s:18:"bracket_expression";s:9:"base_expr";s:19:"(e3.e_id = e2.e_id)";s:8:"sub_tree";a:3:{i:0;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:7:"e3.e_id";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:2:"e3";i:1;s:4:"e_id";}}s:8:"sub_tree";b:0;}i:1;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";s:8:"sub_tree";b:0;}i:2;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:7:"e2.e_id";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:2:"e2";i:1;s:4:"e_id";}}s:8:"sub_tree";b:0;}}}}s:9:"base_expr";s:27:"e e3 on (e3.e_id = e2.e_id)";s:8:"sub_tree";b:0;}}} \ No newline at end of file +a:2:{s:6:"SELECT";a:3:{i:0;a:6:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:8:"a.field1";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:1:"a";i:1;s:6:"field1";}}s:8:"sub_tree";b:0;s:5:"delim";s:1:",";}i:1;a:6:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:8:"b.field1";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:1:"b";i:1;s:6:"field1";}}s:8:"sub_tree";b:0;s:5:"delim";s:1:",";}i:2;a:6:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:8:"c.field1";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:1:"c";i:1;s:6:"field1";}}s:8:"sub_tree";b:0;s:5:"delim";b:0;}}s:4:"FROM";a:7:{i:0;a:10:{s:9:"expr_type";s:5:"table";s:5:"table";s:6:"tablea";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:6:"tablea";}}s:5:"alias";a:4:{s:2:"as";b:0;s:4:"name";s:1:"a";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"a";}}s:9:"base_expr";s:1:"a";}s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:8:"tablea a";s:8:"sub_tree";b:0;}i:1;a:10:{s:9:"expr_type";s:5:"table";s:5:"table";s:6:"tableb";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:6:"tableb";}}s:5:"alias";a:4:{s:2:"as";b:0;s:4:"name";s:1:"b";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"b";}}s:9:"base_expr";s:1:"b";}s:5:"hints";b:0;s:9:"join_type";s:4:"LEFT";s:8:"ref_type";s:2:"ON";s:10:"ref_clause";a:3:{i:0;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:5:"b.ida";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:1:"b";i:1;s:3:"ida";}}s:8:"sub_tree";b:0;}i:1;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";s:8:"sub_tree";b:0;}i:2;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:4:"a.id";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:1:"a";i:1;s:2:"id";}}s:8:"sub_tree";b:0;}}s:9:"base_expr";s:24:"tableb b ON b.ida = a.id";s:8:"sub_tree";b:0;}i:2;a:10:{s:9:"expr_type";s:5:"table";s:5:"table";s:6:"tablec";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:6:"tablec";}}s:5:"alias";a:4:{s:2:"as";b:0;s:4:"name";s:1:"c";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"c";}}s:9:"base_expr";s:1:"c";}s:5:"hints";b:0;s:9:"join_type";s:5:"RIGHT";s:8:"ref_type";s:2:"ON";s:10:"ref_clause";a:3:{i:0;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:5:"c.idb";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:1:"c";i:1;s:3:"idb";}}s:8:"sub_tree";b:0;}i:1;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";s:8:"sub_tree";b:0;}i:2;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:4:"b.id";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:1:"b";i:1;s:2:"id";}}s:8:"sub_tree";b:0;}}s:9:"base_expr";s:24:"tablec c ON c.idb = b.id";s:8:"sub_tree";b:0;}i:3;a:10:{s:9:"expr_type";s:5:"table";s:5:"table";s:6:"tabled";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:6:"tabled";}}s:5:"alias";a:4:{s:2:"as";b:0;s:4:"name";s:1:"d";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"d";}}s:9:"base_expr";s:1:"d";}s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";s:5:"USING";s:10:"ref_clause";a:1:{i:0;a:3:{s:9:"expr_type";s:18:"bracket_expression";s:9:"base_expr";s:6:"(d_id)";s:8:"sub_tree";a:1:{i:0;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:4:"d_id";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:4:"d_id";}}s:8:"sub_tree";b:0;}}}}s:9:"base_expr";s:21:"tabled d USING (d_id)";s:8:"sub_tree";b:0;}i:4;a:10:{s:9:"expr_type";s:5:"table";s:5:"table";s:1:"e";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"e";}}s:5:"alias";b:0;s:5:"hints";b:0;s:9:"join_type";s:5:"RIGHT";s:8:"ref_type";s:2:"ON";s:10:"ref_clause";a:3:{i:0;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:4:"e.id";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:1:"e";i:1;s:2:"id";}}s:8:"sub_tree";b:0;}i:1;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";s:8:"sub_tree";b:0;}i:2;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:6:"a.e_id";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:1:"a";i:1;s:4:"e_id";}}s:8:"sub_tree";b:0;}}s:9:"base_expr";s:18:"e on e.id = a.e_id";s:8:"sub_tree";b:0;}i:5;a:10:{s:9:"expr_type";s:5:"table";s:5:"table";s:1:"e";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"e";}}s:5:"alias";a:4:{s:2:"as";b:0;s:4:"name";s:2:"e2";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:2:"e2";}}s:9:"base_expr";s:2:"e2";}s:5:"hints";b:0;s:9:"join_type";s:4:"LEFT";s:8:"ref_type";s:5:"USING";s:10:"ref_clause";a:1:{i:0;a:3:{s:9:"expr_type";s:18:"bracket_expression";s:9:"base_expr";s:6:"(e_id)";s:8:"sub_tree";a:1:{i:0;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:4:"e_id";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:4:"e_id";}}s:8:"sub_tree";b:0;}}}}s:9:"base_expr";s:17:"e e2 using (e_id)";s:8:"sub_tree";b:0;}i:6;a:10:{s:9:"expr_type";s:5:"table";s:5:"table";s:1:"e";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"e";}}s:5:"alias";a:4:{s:2:"as";b:0;s:4:"name";s:2:"e3";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:2:"e3";}}s:9:"base_expr";s:2:"e3";}s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";s:2:"ON";s:10:"ref_clause";a:1:{i:0;a:3:{s:9:"expr_type";s:18:"bracket_expression";s:9:"base_expr";s:19:"(e3.e_id = e2.e_id)";s:8:"sub_tree";a:3:{i:0;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:7:"e3.e_id";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:2:"e3";i:1;s:4:"e_id";}}s:8:"sub_tree";b:0;}i:1;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";s:8:"sub_tree";b:0;}i:2;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:7:"e2.e_id";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:2:"e2";i:1;s:4:"e_id";}}s:8:"sub_tree";b:0;}}}}s:9:"base_expr";s:27:"e e3 on (e3.e_id = e2.e_id)";s:8:"sub_tree";b:0;}}} \ No newline at end of file diff --git a/tests/expected/parser/manual.serialized b/tests/expected/parser/manual.serialized index 4fcf1737..9a0ebaf7 100644 --- a/tests/expected/parser/manual.serialized +++ b/tests/expected/parser/manual.serialized @@ -1 +1 @@ -a:2:{s:6:"SELECT";a:1:{i:0;a:1:{s:5:"delim";b:0;}}s:4:"FROM";a:2:{i:0;a:10:{s:9:"expr_type";s:5:"table";s:5:"table";s:10:"some_table";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:10:"some_table";}}s:5:"alias";a:5:{s:2:"as";b:0;s:4:"name";s:1:"a";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"a";}}s:9:"base_expr";s:1:"a";s:8:"position";i:23;}s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:12:"some_table a";s:8:"sub_tree";b:0;s:8:"position";i:12;}i:1;a:10:{s:9:"expr_type";s:5:"table";s:5:"table";s:13:"another_table";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:13:"another_table";}}s:5:"alias";a:5:{s:2:"as";b:1;s:4:"name";s:1:"b";s:9:"base_expr";s:4:"AS b";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"b";}}s:8:"position";i:49;}s:9:"join_type";s:4:"LEFT";s:8:"ref_type";s:2:"ON";s:10:"ref_clause";a:1:{i:0;a:4:{s:9:"expr_type";s:8:"function";s:9:"base_expr";s:11:"FIND_IN_SET";s:8:"sub_tree";a:2:{i:0;a:5:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:4:"a.id";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:1:"a";i:1;s:2:"id";}}s:8:"sub_tree";b:0;s:8:"position";i:69;}i:1;a:5:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:16:"b.ids_collection";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:1:"b";i:1;s:14:"ids_collection";}}s:8:"sub_tree";b:0;s:8:"position";i:75;}}s:8:"position";i:57;}}s:9:"base_expr";s:57:"another_table AS b ON FIND_IN_SET(a.id, b.ids_collection)";s:8:"sub_tree";b:0;s:8:"position";i:35;}}} \ No newline at end of file +a:2:{s:6:"SELECT";a:1:{i:0;a:1:{s:5:"delim";b:0;}}s:4:"FROM";a:2:{i:0;a:11:{s:9:"expr_type";s:5:"table";s:5:"table";s:10:"some_table";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:10:"some_table";}}s:5:"alias";a:5:{s:2:"as";b:0;s:4:"name";s:1:"a";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"a";}}s:9:"base_expr";s:1:"a";s:8:"position";i:23;}s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:12:"some_table a";s:8:"sub_tree";b:0;s:8:"position";i:12;}i:1;a:11:{s:9:"expr_type";s:5:"table";s:5:"table";s:13:"another_table";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:13:"another_table";}}s:5:"alias";a:5:{s:2:"as";b:1;s:4:"name";s:1:"b";s:9:"base_expr";s:4:"AS b";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"b";}}s:8:"position";i:49;}s:5:"hints";b:0;s:9:"join_type";s:4:"LEFT";s:8:"ref_type";s:2:"ON";s:10:"ref_clause";a:1:{i:0;a:4:{s:9:"expr_type";s:8:"function";s:9:"base_expr";s:11:"FIND_IN_SET";s:8:"sub_tree";a:2:{i:0;a:5:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:4:"a.id";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:1:"a";i:1;s:2:"id";}}s:8:"sub_tree";b:0;s:8:"position";i:69;}i:1;a:5:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:16:"b.ids_collection";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:1:"b";i:1;s:14:"ids_collection";}}s:8:"sub_tree";b:0;s:8:"position";i:75;}}s:8:"position";i:57;}}s:9:"base_expr";s:57:"another_table AS b ON FIND_IN_SET(a.id, b.ids_collection)";s:8:"sub_tree";b:0;s:8:"position";i:35;}}} \ No newline at end of file diff --git a/tests/expected/parser/nested1.serialized b/tests/expected/parser/nested1.serialized index c0c4ef9e..01dc83c4 100644 --- a/tests/expected/parser/nested1.serialized +++ b/tests/expected/parser/nested1.serialized @@ -1,2 +1,2 @@ -a:2:{s:6:"SELECT";a:1:{i:0;a:6:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:1:"*";s:8:"sub_tree";b:0;s:5:"delim";b:0;s:8:"position";i:7;}}s:4:"FROM";a:2:{i:0;a:8:{s:9:"expr_type";s:16:"table_expression";s:5:"alias";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:28:"t1 LEFT JOIN t2 ON t1.a=t2.a";s:8:"sub_tree";a:2:{i:0;a:10:{s:9:"expr_type";s:5:"table";s:5:"table";s:2:"t1";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:2:"t1";}}s:5:"alias";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:2:"t1";s:8:"sub_tree";b:0;s:8:"position";i:19;}i:1;a:10:{s:9:"expr_type";s:5:"table";s:5:"table";s:2:"t2";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:2:"t2";}}s:5:"alias";b:0;s:9:"join_type";s:4:"LEFT";s:8:"ref_type";s:2:"ON";s:10:"ref_clause";a:3:{i:0;a:5:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:4:"t1.a";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:2:"t1";i:1;s:1:"a";}}s:8:"sub_tree";b:0;s:8:"position";i:38;}i:1;a:4:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";s:8:"sub_tree";b:0;s:8:"position";i:42;}i:2;a:5:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:4:"t2.a";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:2:"t2";i:1;s:1:"a";}}s:8:"sub_tree";b:0;s:8:"position";i:43;}}s:9:"base_expr";s:15:"t2 ON t1.a=t2.a";s:8:"sub_tree";b:0;s:8:"position";i:32;}}s:8:"position";i:19;}i:1;a:10:{s:9:"expr_type";s:5:"table";s:5:"table";s:2:"t3";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:2:"t3";}}s:5:"alias";b:0;s:9:"join_type";s:4:"LEFT";s:8:"ref_type";s:2:"ON";s:10:"ref_clause";a:7:{i:0;a:5:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:4:"t2.b";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:2:"t2";i:1;s:1:"b";}}s:8:"sub_tree";b:0;s:8:"position";i:83;}i:1;a:4:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";s:8:"sub_tree";b:0;s:8:"position";i:87;}i:2;a:5:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:4:"t3.b";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:2:"t3";i:1;s:1:"b";}}s:8:"sub_tree";b:0;s:8:"position";i:88;}i:3;a:4:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:2:"OR";s:8:"sub_tree";b:0;s:8:"position";i:93;}i:4;a:5:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:4:"t2.b";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:2:"t2";i:1;s:1:"b";}}s:8:"sub_tree";b:0;s:8:"position";i:96;}i:5;a:4:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:2:"IS";s:8:"sub_tree";b:0;s:8:"position";i:101;}i:6;a:4:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:4:"NULL";s:8:"sub_tree";b:0;s:8:"position";i:104;}}s:9:"base_expr";s:40:"t3 +a:2:{s:6:"SELECT";a:1:{i:0;a:6:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:1:"*";s:8:"sub_tree";b:0;s:5:"delim";b:0;s:8:"position";i:7;}}s:4:"FROM";a:2:{i:0;a:9:{s:9:"expr_type";s:16:"table_expression";s:5:"alias";b:0;s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:28:"t1 LEFT JOIN t2 ON t1.a=t2.a";s:8:"sub_tree";a:2:{i:0;a:11:{s:9:"expr_type";s:5:"table";s:5:"table";s:2:"t1";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:2:"t1";}}s:5:"alias";b:0;s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:2:"t1";s:8:"sub_tree";b:0;s:8:"position";i:19;}i:1;a:11:{s:9:"expr_type";s:5:"table";s:5:"table";s:2:"t2";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:2:"t2";}}s:5:"alias";b:0;s:5:"hints";b:0;s:9:"join_type";s:4:"LEFT";s:8:"ref_type";s:2:"ON";s:10:"ref_clause";a:3:{i:0;a:5:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:4:"t1.a";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:2:"t1";i:1;s:1:"a";}}s:8:"sub_tree";b:0;s:8:"position";i:38;}i:1;a:4:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";s:8:"sub_tree";b:0;s:8:"position";i:42;}i:2;a:5:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:4:"t2.a";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:2:"t2";i:1;s:1:"a";}}s:8:"sub_tree";b:0;s:8:"position";i:43;}}s:9:"base_expr";s:15:"t2 ON t1.a=t2.a";s:8:"sub_tree";b:0;s:8:"position";i:32;}}s:8:"position";i:19;}i:1;a:11:{s:9:"expr_type";s:5:"table";s:5:"table";s:2:"t3";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:2:"t3";}}s:5:"alias";b:0;s:5:"hints";b:0;s:9:"join_type";s:4:"LEFT";s:8:"ref_type";s:2:"ON";s:10:"ref_clause";a:7:{i:0;a:5:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:4:"t2.b";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:2:"t2";i:1;s:1:"b";}}s:8:"sub_tree";b:0;s:8:"position";i:83;}i:1;a:4:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";s:8:"sub_tree";b:0;s:8:"position";i:87;}i:2;a:5:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:4:"t3.b";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:2:"t3";i:1;s:1:"b";}}s:8:"sub_tree";b:0;s:8:"position";i:88;}i:3;a:4:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:2:"OR";s:8:"sub_tree";b:0;s:8:"position";i:93;}i:4;a:5:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:4:"t2.b";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:2:"t2";i:1;s:1:"b";}}s:8:"sub_tree";b:0;s:8:"position";i:96;}i:5;a:4:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:2:"IS";s:8:"sub_tree";b:0;s:8:"position";i:101;}i:6;a:4:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:4:"NULL";s:8:"sub_tree";b:0;s:8:"position";i:104;}}s:9:"base_expr";s:40:"t3 ON t2.b=t3.b OR t2.b IS NULL";s:8:"sub_tree";b:0;s:8:"position";i:68;}}} \ No newline at end of file diff --git a/tests/expected/parser/nested2.serialized b/tests/expected/parser/nested2.serialized index cf8234d6..ffcece1c 100644 --- a/tests/expected/parser/nested2.serialized +++ b/tests/expected/parser/nested2.serialized @@ -1 +1 @@ -a:2:{s:6:"SELECT";a:1:{i:0;a:5:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:1:"*";s:8:"sub_tree";b:0;s:5:"delim";b:0;}}s:4:"FROM";a:2:{i:0;a:9:{s:9:"expr_type";s:5:"table";s:5:"table";s:2:"t1";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:2:"t1";}}s:5:"alias";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:2:"t1";s:8:"sub_tree";b:0;}i:1;a:7:{s:9:"expr_type";s:16:"table_expression";s:5:"alias";b:0;s:9:"join_type";s:4:"LEFT";s:8:"ref_type";s:2:"ON";s:10:"ref_clause";a:1:{i:0;a:3:{s:9:"expr_type";s:18:"bracket_expression";s:9:"base_expr";s:39:"(t2.a=t1.a AND t3.b=t1.b AND t4.c=t1.c)";s:8:"sub_tree";a:11:{i:0;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:4:"t2.a";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:2:"t2";i:1;s:1:"a";}}s:8:"sub_tree";b:0;}i:1;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";s:8:"sub_tree";b:0;}i:2;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:4:"t1.a";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:2:"t1";i:1;s:1:"a";}}s:8:"sub_tree";b:0;}i:3;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:3:"AND";s:8:"sub_tree";b:0;}i:4;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:4:"t3.b";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:2:"t3";i:1;s:1:"b";}}s:8:"sub_tree";b:0;}i:5;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";s:8:"sub_tree";b:0;}i:6;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:4:"t1.b";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:2:"t1";i:1;s:1:"b";}}s:8:"sub_tree";b:0;}i:7;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:3:"AND";s:8:"sub_tree";b:0;}i:8;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:4:"t4.c";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:2:"t4";i:1;s:1:"c";}}s:8:"sub_tree";b:0;}i:9;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";s:8:"sub_tree";b:0;}i:10;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:4:"t1.c";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:2:"t1";i:1;s:1:"c";}}s:8:"sub_tree";b:0;}}}}s:9:"base_expr";s:10:"t2, t3, t4";s:8:"sub_tree";a:3:{i:0;a:9:{s:9:"expr_type";s:5:"table";s:5:"table";s:2:"t2";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:2:"t2";}}s:5:"alias";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:2:"t2";s:8:"sub_tree";b:0;}i:1;a:9:{s:9:"expr_type";s:5:"table";s:5:"table";s:2:"t3";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:2:"t3";}}s:5:"alias";b:0;s:9:"join_type";s:5:"CROSS";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:2:"t3";s:8:"sub_tree";b:0;}i:2;a:9:{s:9:"expr_type";s:5:"table";s:5:"table";s:2:"t4";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:2:"t4";}}s:5:"alias";b:0;s:9:"join_type";s:5:"CROSS";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:2:"t4";s:8:"sub_tree";b:0;}}}}} \ No newline at end of file +a:2:{s:6:"SELECT";a:1:{i:0;a:5:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:1:"*";s:8:"sub_tree";b:0;s:5:"delim";b:0;}}s:4:"FROM";a:2:{i:0;a:10:{s:9:"expr_type";s:5:"table";s:5:"table";s:2:"t1";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:2:"t1";}}s:5:"alias";b:0;s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:2:"t1";s:8:"sub_tree";b:0;}i:1;a:8:{s:9:"expr_type";s:16:"table_expression";s:5:"alias";b:0;s:5:"hints";b:0;s:9:"join_type";s:4:"LEFT";s:8:"ref_type";s:2:"ON";s:10:"ref_clause";a:1:{i:0;a:3:{s:9:"expr_type";s:18:"bracket_expression";s:9:"base_expr";s:39:"(t2.a=t1.a AND t3.b=t1.b AND t4.c=t1.c)";s:8:"sub_tree";a:11:{i:0;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:4:"t2.a";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:2:"t2";i:1;s:1:"a";}}s:8:"sub_tree";b:0;}i:1;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";s:8:"sub_tree";b:0;}i:2;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:4:"t1.a";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:2:"t1";i:1;s:1:"a";}}s:8:"sub_tree";b:0;}i:3;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:3:"AND";s:8:"sub_tree";b:0;}i:4;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:4:"t3.b";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:2:"t3";i:1;s:1:"b";}}s:8:"sub_tree";b:0;}i:5;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";s:8:"sub_tree";b:0;}i:6;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:4:"t1.b";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:2:"t1";i:1;s:1:"b";}}s:8:"sub_tree";b:0;}i:7;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:3:"AND";s:8:"sub_tree";b:0;}i:8;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:4:"t4.c";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:2:"t4";i:1;s:1:"c";}}s:8:"sub_tree";b:0;}i:9;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";s:8:"sub_tree";b:0;}i:10;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:4:"t1.c";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:2:"t1";i:1;s:1:"c";}}s:8:"sub_tree";b:0;}}}}s:9:"base_expr";s:10:"t2, t3, t4";s:8:"sub_tree";a:3:{i:0;a:10:{s:9:"expr_type";s:5:"table";s:5:"table";s:2:"t2";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:2:"t2";}}s:5:"alias";b:0;s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:2:"t2";s:8:"sub_tree";b:0;}i:1;a:10:{s:9:"expr_type";s:5:"table";s:5:"table";s:2:"t3";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:2:"t3";}}s:5:"alias";b:0;s:5:"hints";b:0;s:9:"join_type";s:5:"CROSS";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:2:"t3";s:8:"sub_tree";b:0;}i:2;a:10:{s:9:"expr_type";s:5:"table";s:5:"table";s:2:"t4";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:2:"t4";}}s:5:"alias";b:0;s:5:"hints";b:0;s:9:"join_type";s:5:"CROSS";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:2:"t4";s:8:"sub_tree";b:0;}}}}} \ No newline at end of file diff --git a/tests/expected/parser/positions1.serialized b/tests/expected/parser/positions1.serialized index 3281dc29..a5b8867b 100644 --- a/tests/expected/parser/positions1.serialized +++ b/tests/expected/parser/positions1.serialized @@ -1 +1 @@ -a:3:{s:6:"SELECT";a:3:{i:0;a:7:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:3:"a.*";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:1:"a";i:1;s:1:"*";}}s:8:"sub_tree";b:0;s:5:"delim";s:1:",";s:8:"position";i:7;}i:1;a:7:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:3:"c.*";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:1:"c";i:1;s:1:"*";}}s:8:"sub_tree";b:0;s:5:"delim";s:1:",";s:8:"position";i:12;}i:2;a:7:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:12:"u.users_name";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:1:"u";i:1;s:10:"users_name";}}s:8:"sub_tree";b:0;s:5:"delim";b:0;s:8:"position";i:17;}}s:4:"FROM";a:3:{i:0;a:10:{s:9:"expr_type";s:5:"table";s:5:"table";s:7:"SURVEYS";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:7:"SURVEYS";}}s:5:"alias";a:5:{s:2:"as";b:1;s:4:"name";s:1:"a";s:9:"base_expr";s:4:"as a";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"a";}}s:8:"position";i:43;}s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:12:"SURVEYS as a";s:8:"sub_tree";b:0;s:8:"position";i:35;}i:1;a:10:{s:9:"expr_type";s:5:"table";s:5:"table";s:24:"SURVEYS_LANGUAGESETTINGS";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:24:"SURVEYS_LANGUAGESETTINGS";}}s:5:"alias";a:5:{s:2:"as";b:1;s:4:"name";s:1:"c";s:9:"base_expr";s:4:"as c";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"c";}}s:8:"position";i:85;}s:9:"join_type";s:4:"JOIN";s:8:"ref_type";s:2:"ON";s:10:"ref_clause";a:9:{i:0;a:4:{s:9:"expr_type";s:18:"bracket_expression";s:9:"base_expr";s:65:"( surveyls_survey_id = a.sid AND surveyls_language = a.language )";s:8:"sub_tree";a:7:{i:0;a:5:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:18:"surveyls_survey_id";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:18:"surveyls_survey_id";}}s:8:"sub_tree";b:0;s:8:"position";i:95;}i:1;a:4:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";s:8:"sub_tree";b:0;s:8:"position";i:114;}i:2;a:5:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:5:"a.sid";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:1:"a";i:1;s:3:"sid";}}s:8:"sub_tree";b:0;s:8:"position";i:116;}i:3;a:4:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:3:"AND";s:8:"sub_tree";b:0;s:8:"position";i:122;}i:4;a:5:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:17:"surveyls_language";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:17:"surveyls_language";}}s:8:"sub_tree";b:0;s:8:"position";i:126;}i:5;a:4:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";s:8:"sub_tree";b:0;s:8:"position";i:144;}i:6;a:5:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:10:"a.language";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:1:"a";i:1;s:8:"language";}}s:8:"sub_tree";b:0;s:8:"position";i:146;}}s:8:"position";i:93;}i:1;a:4:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:3:"AND";s:8:"sub_tree";b:0;s:8:"position";i:159;}i:2;a:5:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:18:"surveyls_survey_id";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:18:"surveyls_survey_id";}}s:8:"sub_tree";b:0;s:8:"position";i:163;}i:3;a:4:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";s:8:"sub_tree";b:0;s:8:"position";i:181;}i:4;a:5:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:5:"a.sid";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:1:"a";i:1;s:3:"sid";}}s:8:"sub_tree";b:0;s:8:"position";i:182;}i:5;a:4:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:3:"and";s:8:"sub_tree";b:0;s:8:"position";i:188;}i:6;a:5:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:17:"surveyls_language";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:17:"surveyls_language";}}s:8:"sub_tree";b:0;s:8:"position";i:192;}i:7;a:4:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";s:8:"sub_tree";b:0;s:8:"position";i:209;}i:8;a:5:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:10:"a.language";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:1:"a";i:1;s:8:"language";}}s:8:"sub_tree";b:0;s:8:"position";i:210;}}s:9:"base_expr";s:160:"SURVEYS_LANGUAGESETTINGS as c ON ( surveyls_survey_id = a.sid AND surveyls_language = a.language ) AND surveyls_survey_id=a.sid and surveyls_language=a.language";s:8:"sub_tree";b:0;s:8:"position";i:60;}i:2;a:10:{s:9:"expr_type";s:5:"table";s:5:"table";s:5:"USERS";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:5:"USERS";}}s:5:"alias";a:5:{s:2:"as";b:1;s:4:"name";s:1:"u";s:9:"base_expr";s:4:"as u";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"u";}}s:8:"position";i:239;}s:9:"join_type";s:4:"JOIN";s:8:"ref_type";s:2:"ON";s:10:"ref_clause";a:1:{i:0;a:4:{s:9:"expr_type";s:18:"bracket_expression";s:9:"base_expr";s:18:"(u.uid=a.owner_id)";s:8:"sub_tree";a:3:{i:0;a:5:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:5:"u.uid";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:1:"u";i:1;s:3:"uid";}}s:8:"sub_tree";b:0;s:8:"position";i:248;}i:1;a:4:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";s:8:"sub_tree";b:0;s:8:"position";i:253;}i:2;a:5:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:10:"a.owner_id";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:1:"a";i:1;s:8:"owner_id";}}s:8:"sub_tree";b:0;s:8:"position";i:254;}}s:8:"position";i:247;}}s:9:"base_expr";s:32:"USERS as u ON (u.uid=a.owner_id)";s:8:"sub_tree";b:0;s:8:"position";i:233;}}s:5:"ORDER";a:1:{i:0;a:6:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:14:"surveyls_title";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:14:"surveyls_title";}}s:8:"sub_tree";b:0;s:9:"direction";s:3:"ASC";s:8:"position";i:276;}}} \ No newline at end of file +a:3:{s:6:"SELECT";a:3:{i:0;a:7:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:3:"a.*";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:1:"a";i:1;s:1:"*";}}s:8:"sub_tree";b:0;s:5:"delim";s:1:",";s:8:"position";i:7;}i:1;a:7:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:3:"c.*";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:1:"c";i:1;s:1:"*";}}s:8:"sub_tree";b:0;s:5:"delim";s:1:",";s:8:"position";i:12;}i:2;a:7:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:12:"u.users_name";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:1:"u";i:1;s:10:"users_name";}}s:8:"sub_tree";b:0;s:5:"delim";b:0;s:8:"position";i:17;}}s:4:"FROM";a:3:{i:0;a:11:{s:9:"expr_type";s:5:"table";s:5:"table";s:7:"SURVEYS";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:7:"SURVEYS";}}s:5:"alias";a:5:{s:2:"as";b:1;s:4:"name";s:1:"a";s:9:"base_expr";s:4:"as a";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"a";}}s:8:"position";i:43;}s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:12:"SURVEYS as a";s:8:"sub_tree";b:0;s:8:"position";i:35;}i:1;a:11:{s:9:"expr_type";s:5:"table";s:5:"table";s:24:"SURVEYS_LANGUAGESETTINGS";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:24:"SURVEYS_LANGUAGESETTINGS";}}s:5:"alias";a:5:{s:2:"as";b:1;s:4:"name";s:1:"c";s:9:"base_expr";s:4:"as c";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"c";}}s:8:"position";i:85;}s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";s:2:"ON";s:10:"ref_clause";a:9:{i:0;a:4:{s:9:"expr_type";s:18:"bracket_expression";s:9:"base_expr";s:65:"( surveyls_survey_id = a.sid AND surveyls_language = a.language )";s:8:"sub_tree";a:7:{i:0;a:5:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:18:"surveyls_survey_id";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:18:"surveyls_survey_id";}}s:8:"sub_tree";b:0;s:8:"position";i:95;}i:1;a:4:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";s:8:"sub_tree";b:0;s:8:"position";i:114;}i:2;a:5:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:5:"a.sid";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:1:"a";i:1;s:3:"sid";}}s:8:"sub_tree";b:0;s:8:"position";i:116;}i:3;a:4:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:3:"AND";s:8:"sub_tree";b:0;s:8:"position";i:122;}i:4;a:5:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:17:"surveyls_language";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:17:"surveyls_language";}}s:8:"sub_tree";b:0;s:8:"position";i:126;}i:5;a:4:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";s:8:"sub_tree";b:0;s:8:"position";i:144;}i:6;a:5:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:10:"a.language";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:1:"a";i:1;s:8:"language";}}s:8:"sub_tree";b:0;s:8:"position";i:146;}}s:8:"position";i:93;}i:1;a:4:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:3:"AND";s:8:"sub_tree";b:0;s:8:"position";i:159;}i:2;a:5:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:18:"surveyls_survey_id";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:18:"surveyls_survey_id";}}s:8:"sub_tree";b:0;s:8:"position";i:163;}i:3;a:4:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";s:8:"sub_tree";b:0;s:8:"position";i:181;}i:4;a:5:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:5:"a.sid";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:1:"a";i:1;s:3:"sid";}}s:8:"sub_tree";b:0;s:8:"position";i:182;}i:5;a:4:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:3:"and";s:8:"sub_tree";b:0;s:8:"position";i:188;}i:6;a:5:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:17:"surveyls_language";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:17:"surveyls_language";}}s:8:"sub_tree";b:0;s:8:"position";i:192;}i:7;a:4:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";s:8:"sub_tree";b:0;s:8:"position";i:209;}i:8;a:5:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:10:"a.language";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:1:"a";i:1;s:8:"language";}}s:8:"sub_tree";b:0;s:8:"position";i:210;}}s:9:"base_expr";s:160:"SURVEYS_LANGUAGESETTINGS as c ON ( surveyls_survey_id = a.sid AND surveyls_language = a.language ) AND surveyls_survey_id=a.sid and surveyls_language=a.language";s:8:"sub_tree";b:0;s:8:"position";i:60;}i:2;a:11:{s:9:"expr_type";s:5:"table";s:5:"table";s:5:"USERS";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:5:"USERS";}}s:5:"alias";a:5:{s:2:"as";b:1;s:4:"name";s:1:"u";s:9:"base_expr";s:4:"as u";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"u";}}s:8:"position";i:239;}s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";s:2:"ON";s:10:"ref_clause";a:1:{i:0;a:4:{s:9:"expr_type";s:18:"bracket_expression";s:9:"base_expr";s:18:"(u.uid=a.owner_id)";s:8:"sub_tree";a:3:{i:0;a:5:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:5:"u.uid";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:1:"u";i:1;s:3:"uid";}}s:8:"sub_tree";b:0;s:8:"position";i:248;}i:1;a:4:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";s:8:"sub_tree";b:0;s:8:"position";i:253;}i:2;a:5:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:10:"a.owner_id";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:1:"a";i:1;s:8:"owner_id";}}s:8:"sub_tree";b:0;s:8:"position";i:254;}}s:8:"position";i:247;}}s:9:"base_expr";s:32:"USERS as u ON (u.uid=a.owner_id)";s:8:"sub_tree";b:0;s:8:"position";i:233;}}s:5:"ORDER";a:1:{i:0;a:6:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:14:"surveyls_title";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:14:"surveyls_title";}}s:8:"sub_tree";b:0;s:9:"direction";s:3:"ASC";s:8:"position";i:276;}}} \ No newline at end of file diff --git a/tests/expected/parser/select1.serialized b/tests/expected/parser/select1.serialized index 6550c343..d27b1802 100644 --- a/tests/expected/parser/select1.serialized +++ b/tests/expected/parser/select1.serialized @@ -1 +1 @@ -a:3:{s:6:"SELECT";a:5:{i:0;a:6:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:3:"a.*";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:1:"a";i:1;s:1:"*";}}s:8:"sub_tree";b:0;s:5:"delim";s:1:",";}i:1;a:6:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:14:"surveyls_title";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:14:"surveyls_title";}}s:8:"sub_tree";b:0;s:5:"delim";s:1:",";}i:2;a:6:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:20:"surveyls_description";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:20:"surveyls_description";}}s:8:"sub_tree";b:0;s:5:"delim";s:1:",";}i:3;a:6:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:20:"surveyls_welcometext";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:20:"surveyls_welcometext";}}s:8:"sub_tree";b:0;s:5:"delim";s:1:",";}i:4;a:6:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:12:"surveyls_url";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:12:"surveyls_url";}}s:8:"sub_tree";b:0;s:5:"delim";b:0;}}s:4:"FROM";a:2:{i:0;a:9:{s:9:"expr_type";s:5:"table";s:5:"table";s:7:"SURVEYS";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:7:"SURVEYS";}}s:5:"alias";a:4:{s:2:"as";b:1;s:4:"name";s:1:"a";s:9:"base_expr";s:4:"AS a";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"a";}}}s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:12:"SURVEYS AS a";s:8:"sub_tree";b:0;}i:1;a:9:{s:9:"expr_type";s:5:"table";s:5:"table";s:24:"SURVEYS_LANGUAGESETTINGS";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:24:"SURVEYS_LANGUAGESETTINGS";}}s:5:"alias";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";s:2:"ON";s:10:"ref_clause";a:1:{i:0;a:3:{s:9:"expr_type";s:18:"bracket_expression";s:9:"base_expr";s:59:"(surveyls_survey_id=a.sid and surveyls_language=a.language)";s:8:"sub_tree";a:7:{i:0;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:18:"surveyls_survey_id";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:18:"surveyls_survey_id";}}s:8:"sub_tree";b:0;}i:1;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";s:8:"sub_tree";b:0;}i:2;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:5:"a.sid";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:1:"a";i:1;s:3:"sid";}}s:8:"sub_tree";b:0;}i:3;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:3:"and";s:8:"sub_tree";b:0;}i:4;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:17:"surveyls_language";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:17:"surveyls_language";}}s:8:"sub_tree";b:0;}i:5;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";s:8:"sub_tree";b:0;}i:6;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:10:"a.language";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:1:"a";i:1;s:8:"language";}}s:8:"sub_tree";b:0;}}}}s:9:"base_expr";s:87:"SURVEYS_LANGUAGESETTINGS on (surveyls_survey_id=a.sid and surveyls_language=a.language)";s:8:"sub_tree";b:0;}}s:5:"ORDER";a:2:{i:0;a:5:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:6:"active";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:6:"active";}}s:8:"sub_tree";b:0;s:9:"direction";s:4:"DESC";}i:1;a:5:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:14:"surveyls_title";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:14:"surveyls_title";}}s:8:"sub_tree";b:0;s:9:"direction";s:3:"ASC";}}} \ No newline at end of file +a:3:{s:6:"SELECT";a:5:{i:0;a:6:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:3:"a.*";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:1:"a";i:1;s:1:"*";}}s:8:"sub_tree";b:0;s:5:"delim";s:1:",";}i:1;a:6:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:14:"surveyls_title";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:14:"surveyls_title";}}s:8:"sub_tree";b:0;s:5:"delim";s:1:",";}i:2;a:6:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:20:"surveyls_description";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:20:"surveyls_description";}}s:8:"sub_tree";b:0;s:5:"delim";s:1:",";}i:3;a:6:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:20:"surveyls_welcometext";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:20:"surveyls_welcometext";}}s:8:"sub_tree";b:0;s:5:"delim";s:1:",";}i:4;a:6:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:12:"surveyls_url";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:12:"surveyls_url";}}s:8:"sub_tree";b:0;s:5:"delim";b:0;}}s:4:"FROM";a:2:{i:0;a:10:{s:9:"expr_type";s:5:"table";s:5:"table";s:7:"SURVEYS";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:7:"SURVEYS";}}s:5:"alias";a:4:{s:2:"as";b:1;s:4:"name";s:1:"a";s:9:"base_expr";s:4:"AS a";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"a";}}}s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:12:"SURVEYS AS a";s:8:"sub_tree";b:0;}i:1;a:10:{s:9:"expr_type";s:5:"table";s:5:"table";s:24:"SURVEYS_LANGUAGESETTINGS";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:24:"SURVEYS_LANGUAGESETTINGS";}}s:5:"alias";b:0;s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";s:2:"ON";s:10:"ref_clause";a:1:{i:0;a:3:{s:9:"expr_type";s:18:"bracket_expression";s:9:"base_expr";s:59:"(surveyls_survey_id=a.sid and surveyls_language=a.language)";s:8:"sub_tree";a:7:{i:0;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:18:"surveyls_survey_id";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:18:"surveyls_survey_id";}}s:8:"sub_tree";b:0;}i:1;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";s:8:"sub_tree";b:0;}i:2;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:5:"a.sid";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:1:"a";i:1;s:3:"sid";}}s:8:"sub_tree";b:0;}i:3;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:3:"and";s:8:"sub_tree";b:0;}i:4;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:17:"surveyls_language";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:17:"surveyls_language";}}s:8:"sub_tree";b:0;}i:5;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";s:8:"sub_tree";b:0;}i:6;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:10:"a.language";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:1:"a";i:1;s:8:"language";}}s:8:"sub_tree";b:0;}}}}s:9:"base_expr";s:87:"SURVEYS_LANGUAGESETTINGS on (surveyls_survey_id=a.sid and surveyls_language=a.language)";s:8:"sub_tree";b:0;}}s:5:"ORDER";a:2:{i:0;a:5:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:6:"active";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:6:"active";}}s:8:"sub_tree";b:0;s:9:"direction";s:4:"DESC";}i:1;a:5:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:14:"surveyls_title";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:14:"surveyls_title";}}s:8:"sub_tree";b:0;s:9:"direction";s:3:"ASC";}}} \ No newline at end of file diff --git a/tests/expected/parser/select2.serialized b/tests/expected/parser/select2.serialized index acf76172..f8a6f27d 100644 --- a/tests/expected/parser/select2.serialized +++ b/tests/expected/parser/select2.serialized @@ -1 +1 @@ -a:4:{s:6:"SELECT";a:2:{i:0;a:6:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:12:"pl_namespace";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:12:"pl_namespace";}}s:8:"sub_tree";b:0;s:5:"delim";s:1:",";}i:1;a:6:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:8:"pl_title";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:8:"pl_title";}}s:8:"sub_tree";b:0;s:5:"delim";b:0;}}s:4:"FROM";a:1:{i:0;a:9:{s:9:"expr_type";s:5:"table";s:5:"table";s:11:"`pagelinks`";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:9:"pagelinks";}}s:5:"alias";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:11:"`pagelinks`";s:8:"sub_tree";b:0;}}s:5:"WHERE";a:3:{i:0;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:7:"pl_from";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:7:"pl_from";}}s:8:"sub_tree";b:0;}i:1;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";s:8:"sub_tree";b:0;}i:2;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:3:"'1'";s:8:"sub_tree";b:0;}}s:7:"OPTIONS";a:1:{i:0;a:3:{s:9:"expr_type";s:10:"expression";s:9:"base_expr";s:10:"FOR UPDATE";s:8:"sub_tree";a:2:{i:0;a:2:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:3:"FOR";}i:1;a:2:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:6:"UPDATE";}}}}} \ No newline at end of file +a:4:{s:6:"SELECT";a:2:{i:0;a:6:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:12:"pl_namespace";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:12:"pl_namespace";}}s:8:"sub_tree";b:0;s:5:"delim";s:1:",";}i:1;a:6:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:8:"pl_title";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:8:"pl_title";}}s:8:"sub_tree";b:0;s:5:"delim";b:0;}}s:4:"FROM";a:1:{i:0;a:10:{s:9:"expr_type";s:5:"table";s:5:"table";s:11:"`pagelinks`";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:9:"pagelinks";}}s:5:"alias";b:0;s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:11:"`pagelinks`";s:8:"sub_tree";b:0;}}s:5:"WHERE";a:3:{i:0;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:7:"pl_from";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:7:"pl_from";}}s:8:"sub_tree";b:0;}i:1;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";s:8:"sub_tree";b:0;}i:2;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:3:"'1'";s:8:"sub_tree";b:0;}}s:7:"OPTIONS";a:1:{i:0;a:3:{s:9:"expr_type";s:10:"expression";s:9:"base_expr";s:10:"FOR UPDATE";s:8:"sub_tree";a:2:{i:0;a:2:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:3:"FOR";}i:1;a:2:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:6:"UPDATE";}}}}} \ No newline at end of file diff --git a/tests/expected/parser/subselect1.serialized b/tests/expected/parser/subselect1.serialized index 9147965c..181e31f1 100644 --- a/tests/expected/parser/subselect1.serialized +++ b/tests/expected/parser/subselect1.serialized @@ -1 +1 @@ -a:2:{s:6:"SELECT";a:1:{i:0;a:5:{s:9:"expr_type";s:10:"expression";s:5:"alias";a:4:{s:2:"as";b:1;s:4:"name";s:1:"b";s:9:"base_expr";s:4:"as b";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"b";}}}s:9:"base_expr";s:25:"(select colA FRom TableA)";s:8:"sub_tree";a:1:{i:0;a:3:{s:9:"expr_type";s:8:"subquery";s:9:"base_expr";s:25:"(select colA FRom TableA)";s:8:"sub_tree";a:2:{s:6:"SELECT";a:1:{i:0;a:6:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:4:"colA";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:4:"colA";}}s:8:"sub_tree";b:0;s:5:"delim";b:0;}}s:4:"FROM";a:1:{i:0;a:9:{s:9:"expr_type";s:5:"table";s:5:"table";s:6:"TableA";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:6:"TableA";}}s:5:"alias";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:6:"TableA";s:8:"sub_tree";b:0;}}}}}s:5:"delim";b:0;}}s:4:"FROM";a:1:{i:0;a:9:{s:9:"expr_type";s:5:"table";s:5:"table";s:4:"test";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:4:"test";}}s:5:"alias";a:4:{s:2:"as";b:0;s:4:"name";s:1:"t";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"t";}}s:9:"base_expr";s:1:"t";}s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:6:"test t";s:8:"sub_tree";b:0;}}} \ No newline at end of file +a:2:{s:6:"SELECT";a:1:{i:0;a:5:{s:9:"expr_type";s:10:"expression";s:5:"alias";a:4:{s:2:"as";b:1;s:4:"name";s:1:"b";s:9:"base_expr";s:4:"as b";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"b";}}}s:9:"base_expr";s:30:"(select colA FRom TableA) as b";s:8:"sub_tree";a:1:{i:0;a:3:{s:9:"expr_type";s:8:"subquery";s:9:"base_expr";s:25:"(select colA FRom TableA)";s:8:"sub_tree";a:2:{s:6:"SELECT";a:1:{i:0;a:6:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:4:"colA";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:4:"colA";}}s:8:"sub_tree";b:0;s:5:"delim";b:0;}}s:4:"FROM";a:1:{i:0;a:10:{s:9:"expr_type";s:5:"table";s:5:"table";s:6:"TableA";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:6:"TableA";}}s:5:"alias";b:0;s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:6:"TableA";s:8:"sub_tree";b:0;}}}}}s:5:"delim";b:0;}}s:4:"FROM";a:1:{i:0;a:10:{s:9:"expr_type";s:5:"table";s:5:"table";s:4:"test";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:4:"test";}}s:5:"alias";a:4:{s:2:"as";b:0;s:4:"name";s:1:"t";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"t";}}s:9:"base_expr";s:1:"t";}s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:6:"test t";s:8:"sub_tree";b:0;}}} \ No newline at end of file diff --git a/tests/expected/parser/subselect2.serialized b/tests/expected/parser/subselect2.serialized index 19a6c1e1..bf00ff08 100644 --- a/tests/expected/parser/subselect2.serialized +++ b/tests/expected/parser/subselect2.serialized @@ -1 +1 @@ -a:4:{s:6:"SELECT";a:2:{i:0;a:6:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:5:"a.uid";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:1:"a";i:1;s:3:"uid";}}s:8:"sub_tree";b:0;s:5:"delim";s:1:",";}i:1;a:6:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:12:"a.users_name";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:1:"a";i:1;s:10:"users_name";}}s:8:"sub_tree";b:0;s:5:"delim";b:0;}}s:4:"FROM";a:2:{i:0;a:9:{s:9:"expr_type";s:5:"table";s:5:"table";s:5:"USERS";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:5:"USERS";}}s:5:"alias";a:4:{s:2:"as";b:1;s:4:"name";s:1:"a";s:9:"base_expr";s:4:"AS a";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"a";}}}s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:10:"USERS AS a";s:8:"sub_tree";b:0;}i:1;a:7:{s:9:"expr_type";s:8:"subquery";s:5:"alias";a:4:{s:2:"as";b:1;s:4:"name";s:1:"b";s:9:"base_expr";s:4:"AS b";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"b";}}}s:9:"join_type";s:4:"LEFT";s:8:"ref_type";s:2:"ON";s:10:"ref_clause";a:3:{i:0;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:5:"a.uid";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:1:"a";i:1;s:3:"uid";}}s:8:"sub_tree";b:0;}i:1;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";s:8:"sub_tree";b:0;}i:2;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:4:"b.id";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:1:"b";i:1;s:2:"id";}}s:8:"sub_tree";b:0;}}s:9:"base_expr";s:51:"SELECT uid AS id FROM USER_IN_GROUPS WHERE ugid = 1";s:8:"sub_tree";a:3:{s:6:"SELECT";a:1:{i:0;a:6:{s:9:"expr_type";s:6:"colref";s:5:"alias";a:4:{s:2:"as";b:1;s:4:"name";s:2:"id";s:9:"base_expr";s:5:"AS id";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:2:"id";}}}s:9:"base_expr";s:3:"uid";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:3:"uid";}}s:8:"sub_tree";b:0;s:5:"delim";b:0;}}s:4:"FROM";a:1:{i:0;a:9:{s:9:"expr_type";s:5:"table";s:5:"table";s:14:"USER_IN_GROUPS";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:14:"USER_IN_GROUPS";}}s:5:"alias";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:14:"USER_IN_GROUPS";s:8:"sub_tree";b:0;}}s:5:"WHERE";a:3:{i:0;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:4:"ugid";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:4:"ugid";}}s:8:"sub_tree";b:0;}i:1;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";s:8:"sub_tree";b:0;}i:2;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:1:"1";s:8:"sub_tree";b:0;}}}}}s:5:"WHERE";a:3:{i:0;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:2:"id";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:2:"id";}}s:8:"sub_tree";b:0;}i:1;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:2:"IS";s:8:"sub_tree";b:0;}i:2;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:4:"NULL";s:8:"sub_tree";b:0;}}s:5:"ORDER";a:1:{i:0;a:5:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:12:"a.users_name";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:1:"a";i:1;s:10:"users_name";}}s:8:"sub_tree";b:0;s:9:"direction";s:3:"ASC";}}} \ No newline at end of file +a:4:{s:6:"SELECT";a:2:{i:0;a:6:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:5:"a.uid";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:1:"a";i:1;s:3:"uid";}}s:8:"sub_tree";b:0;s:5:"delim";s:1:",";}i:1;a:6:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:12:"a.users_name";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:1:"a";i:1;s:10:"users_name";}}s:8:"sub_tree";b:0;s:5:"delim";b:0;}}s:4:"FROM";a:2:{i:0;a:10:{s:9:"expr_type";s:5:"table";s:5:"table";s:5:"USERS";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:5:"USERS";}}s:5:"alias";a:4:{s:2:"as";b:1;s:4:"name";s:1:"a";s:9:"base_expr";s:4:"AS a";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"a";}}}s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:10:"USERS AS a";s:8:"sub_tree";b:0;}i:1;a:8:{s:9:"expr_type";s:8:"subquery";s:5:"alias";a:4:{s:2:"as";b:1;s:4:"name";s:1:"b";s:9:"base_expr";s:4:"AS b";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"b";}}}s:5:"hints";b:0;s:9:"join_type";s:4:"LEFT";s:8:"ref_type";s:2:"ON";s:10:"ref_clause";a:3:{i:0;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:5:"a.uid";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:1:"a";i:1;s:3:"uid";}}s:8:"sub_tree";b:0;}i:1;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";s:8:"sub_tree";b:0;}i:2;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:4:"b.id";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:1:"b";i:1;s:2:"id";}}s:8:"sub_tree";b:0;}}s:9:"base_expr";s:51:"SELECT uid AS id FROM USER_IN_GROUPS WHERE ugid = 1";s:8:"sub_tree";a:3:{s:6:"SELECT";a:1:{i:0;a:6:{s:9:"expr_type";s:6:"colref";s:5:"alias";a:4:{s:2:"as";b:1;s:4:"name";s:2:"id";s:9:"base_expr";s:5:"AS id";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:2:"id";}}}s:9:"base_expr";s:3:"uid";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:3:"uid";}}s:8:"sub_tree";b:0;s:5:"delim";b:0;}}s:4:"FROM";a:1:{i:0;a:10:{s:9:"expr_type";s:5:"table";s:5:"table";s:14:"USER_IN_GROUPS";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:14:"USER_IN_GROUPS";}}s:5:"alias";b:0;s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:14:"USER_IN_GROUPS";s:8:"sub_tree";b:0;}}s:5:"WHERE";a:3:{i:0;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:4:"ugid";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:4:"ugid";}}s:8:"sub_tree";b:0;}i:1;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";s:8:"sub_tree";b:0;}i:2;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:1:"1";s:8:"sub_tree";b:0;}}}}}s:5:"WHERE";a:3:{i:0;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:2:"id";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:2:"id";}}s:8:"sub_tree";b:0;}i:1;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:2:"IS";s:8:"sub_tree";b:0;}i:2;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:4:"NULL";s:8:"sub_tree";b:0;}}s:5:"ORDER";a:1:{i:0;a:5:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:12:"a.users_name";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:1:"a";i:1;s:10:"users_name";}}s:8:"sub_tree";b:0;s:9:"direction";s:3:"ASC";}}} \ No newline at end of file