From 586e238f01c7cb4eccf064bb5de3347c8c97bd14 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michal=20=C4=8Ciha=C5=99?= Date: Tue, 26 Apr 2016 15:52:51 +0200 Subject: [PATCH] Update SQL parser to 3.4.4 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Revision 1ec169a2a76110bbd0734da23a43c4d23c1eecfb Fixes #12144 Fixes #12205 Signed-off-by: Michal Čihař --- ChangeLog | 2 ++ libraries/sql-parser/src/Components/Expression.php | 5 +++-- libraries/sql-parser/src/Components/JoinKeyword.php | 1 + libraries/sql-parser/src/Contexts/ContextMySql50000.php | 4 ++-- libraries/sql-parser/src/Contexts/ContextMySql50100.php | 4 ++-- libraries/sql-parser/src/Contexts/ContextMySql50500.php | 4 ++-- libraries/sql-parser/src/Contexts/ContextMySql50600.php | 4 ++-- libraries/sql-parser/src/Contexts/ContextMySql50700.php | 4 ++-- libraries/sql-parser/src/Parser.php | 4 ++++ 9 files changed, 20 insertions(+), 12 deletions(-) diff --git a/ChangeLog b/ChangeLog index 7bbcf63cc4..18abe2e9e6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -22,6 +22,8 @@ phpMyAdmin - ChangeLog - issue #12211 non-clickable initial letter for users / and can't modify users with MySQL 5.7.12 - issue #12215 Fixed config tab persistence errors - issue #12217 Fixed javascript erros on user creation +- issue #12144 Fixed parsing of some AS clauses +- issue #12205 Fixed parsing of FULL OUTER JOIN queries 4.6.0.0 (2016-03-22) + issue #11456 Disabled storage engines diff --git a/libraries/sql-parser/src/Components/Expression.php b/libraries/sql-parser/src/Components/Expression.php index ab855f67cd..592207bf24 100644 --- a/libraries/sql-parser/src/Components/Expression.php +++ b/libraries/sql-parser/src/Components/Expression.php @@ -227,7 +227,8 @@ class Expression extends Component // beginning of a statement, so this is a subquery. $ret->subquery = $token->value; } elseif (($token->flags & Token::FLAG_KEYWORD_FUNCTION) - && (empty($options['parseField'])) + && (empty($options['parseField']) + && ! $alias) ) { $isExpr = true; } elseif (($token->flags & Token::FLAG_KEYWORD_RESERVED) @@ -254,7 +255,7 @@ class Expression extends Component continue; } $isExpr = true; - } elseif ($brackets === 0 && count($ret->expr) > 0) { + } elseif ($brackets === 0 && count($ret->expr) > 0 && ! $alias) { /* End of expression */ break; } diff --git a/libraries/sql-parser/src/Components/JoinKeyword.php b/libraries/sql-parser/src/Components/JoinKeyword.php index 75ecca6064..e7f62a6ff8 100644 --- a/libraries/sql-parser/src/Components/JoinKeyword.php +++ b/libraries/sql-parser/src/Components/JoinKeyword.php @@ -32,6 +32,7 @@ class JoinKeyword extends Component */ public static $JOINS = array( 'FULL JOIN' => 'FULL', + 'FULL OUTER JOIN' => 'FULL', 'INNER JOIN' => 'INNER', 'JOIN' => 'JOIN', 'LEFT JOIN' => 'LEFT', diff --git a/libraries/sql-parser/src/Contexts/ContextMySql50000.php b/libraries/sql-parser/src/Contexts/ContextMySql50000.php index 62b776d171..93f026810f 100644 --- a/libraries/sql-parser/src/Contexts/ContextMySql50000.php +++ b/libraries/sql-parser/src/Contexts/ContextMySql50000.php @@ -154,8 +154,8 @@ class ContextMySql50000 extends Context 'SET PASSWORD' => 7, 'SQL SECURITY' => 7, 'CHARACTER SET' => 7, 'IF NOT EXISTS' => 7, 'DATA DIRECTORY' => 7, 'UNION DISTINCT' => 7, - 'DEFAULT CHARSET' => 7, 'DEFAULT COLLATE' => 7, 'INDEX DIRECTORY' => 7, - 'LEFT OUTER JOIN' => 7, 'SUBPARTITION BY' => 7, + 'DEFAULT CHARSET' => 7, 'DEFAULT COLLATE' => 7, 'FULL OUTER JOIN' => 7, + 'INDEX DIRECTORY' => 7, 'LEFT OUTER JOIN' => 7, 'SUBPARTITION BY' => 7, 'GENERATED ALWAYS' => 7, 'RIGHT OUTER JOIN' => 7, 'START TRANSACTION' => 7, 'SELECT TRANSACTION' => 7, diff --git a/libraries/sql-parser/src/Contexts/ContextMySql50100.php b/libraries/sql-parser/src/Contexts/ContextMySql50100.php index 7cb8541c44..5b15f5f118 100644 --- a/libraries/sql-parser/src/Contexts/ContextMySql50100.php +++ b/libraries/sql-parser/src/Contexts/ContextMySql50100.php @@ -167,8 +167,8 @@ class ContextMySql50100 extends Context 'SET PASSWORD' => 7, 'SQL SECURITY' => 7, 'CHARACTER SET' => 7, 'IF NOT EXISTS' => 7, 'DATA DIRECTORY' => 7, 'UNION DISTINCT' => 7, - 'DEFAULT CHARSET' => 7, 'DEFAULT COLLATE' => 7, 'INDEX DIRECTORY' => 7, - 'LEFT OUTER JOIN' => 7, 'SUBPARTITION BY' => 7, + 'DEFAULT CHARSET' => 7, 'DEFAULT COLLATE' => 7, 'FULL OUTER JOIN' => 7, + 'INDEX DIRECTORY' => 7, 'LEFT OUTER JOIN' => 7, 'SUBPARTITION BY' => 7, 'GENERATED ALWAYS' => 7, 'RIGHT OUTER JOIN' => 7, 'START TRANSACTION' => 7, 'SELECT TRANSACTION' => 7, diff --git a/libraries/sql-parser/src/Contexts/ContextMySql50500.php b/libraries/sql-parser/src/Contexts/ContextMySql50500.php index 04d723d03e..cb5fdc3c22 100644 --- a/libraries/sql-parser/src/Contexts/ContextMySql50500.php +++ b/libraries/sql-parser/src/Contexts/ContextMySql50500.php @@ -171,8 +171,8 @@ class ContextMySql50500 extends Context 'SET PASSWORD' => 7, 'SQL SECURITY' => 7, 'CHARACTER SET' => 7, 'IF NOT EXISTS' => 7, 'DATA DIRECTORY' => 7, 'UNION DISTINCT' => 7, - 'DEFAULT CHARSET' => 7, 'DEFAULT COLLATE' => 7, 'INDEX DIRECTORY' => 7, - 'LEFT OUTER JOIN' => 7, 'SUBPARTITION BY' => 7, + 'DEFAULT CHARSET' => 7, 'DEFAULT COLLATE' => 7, 'FULL OUTER JOIN' => 7, + 'INDEX DIRECTORY' => 7, 'LEFT OUTER JOIN' => 7, 'SUBPARTITION BY' => 7, 'GENERATED ALWAYS' => 7, 'RIGHT OUTER JOIN' => 7, 'START TRANSACTION' => 7, 'SELECT TRANSACTION' => 7, diff --git a/libraries/sql-parser/src/Contexts/ContextMySql50600.php b/libraries/sql-parser/src/Contexts/ContextMySql50600.php index 0e4fef27dc..aca5f7bbcd 100644 --- a/libraries/sql-parser/src/Contexts/ContextMySql50600.php +++ b/libraries/sql-parser/src/Contexts/ContextMySql50600.php @@ -177,8 +177,8 @@ class ContextMySql50600 extends Context 'SET PASSWORD' => 7, 'SQL SECURITY' => 7, 'CHARACTER SET' => 7, 'IF NOT EXISTS' => 7, 'DATA DIRECTORY' => 7, 'UNION DISTINCT' => 7, - 'DEFAULT CHARSET' => 7, 'DEFAULT COLLATE' => 7, 'INDEX DIRECTORY' => 7, - 'LEFT OUTER JOIN' => 7, 'SUBPARTITION BY' => 7, + 'DEFAULT CHARSET' => 7, 'DEFAULT COLLATE' => 7, 'FULL OUTER JOIN' => 7, + 'INDEX DIRECTORY' => 7, 'LEFT OUTER JOIN' => 7, 'SUBPARTITION BY' => 7, 'GENERATED ALWAYS' => 7, 'RIGHT OUTER JOIN' => 7, 'START TRANSACTION' => 7, 'SELECT TRANSACTION' => 7, diff --git a/libraries/sql-parser/src/Contexts/ContextMySql50700.php b/libraries/sql-parser/src/Contexts/ContextMySql50700.php index bdcb45e320..3f425169e2 100644 --- a/libraries/sql-parser/src/Contexts/ContextMySql50700.php +++ b/libraries/sql-parser/src/Contexts/ContextMySql50700.php @@ -183,8 +183,8 @@ class ContextMySql50700 extends Context 'SET PASSWORD' => 7, 'SQL SECURITY' => 7, 'CHARACTER SET' => 7, 'IF NOT EXISTS' => 7, 'DATA DIRECTORY' => 7, 'UNION DISTINCT' => 7, - 'DEFAULT CHARSET' => 7, 'DEFAULT COLLATE' => 7, 'INDEX DIRECTORY' => 7, - 'LEFT OUTER JOIN' => 7, 'SUBPARTITION BY' => 7, + 'DEFAULT CHARSET' => 7, 'DEFAULT COLLATE' => 7, 'FULL OUTER JOIN' => 7, + 'INDEX DIRECTORY' => 7, 'LEFT OUTER JOIN' => 7, 'SUBPARTITION BY' => 7, 'GENERATED ALWAYS' => 7, 'RIGHT OUTER JOIN' => 7, 'START TRANSACTION' => 7, 'SELECT TRANSACTION' => 7, diff --git a/libraries/sql-parser/src/Parser.php b/libraries/sql-parser/src/Parser.php index 74274f0c9c..e37b36374b 100644 --- a/libraries/sql-parser/src/Parser.php +++ b/libraries/sql-parser/src/Parser.php @@ -210,6 +210,10 @@ class Parser 'class' => 'SqlParser\\Components\\JoinKeyword', 'field' => 'join', ), + 'FULL OUTER JOIN' => array( + 'class' => 'SqlParser\\Components\\JoinKeyword', + 'field' => 'join', + ), 'STRAIGHT_JOIN' => array( 'class' => 'SqlParser\\Components\\JoinKeyword', 'field' => 'join',