diff options
author | William Desportes <williamdes@wdes.fr> | 2019-12-31 12:23:51 +0100 |
---|---|---|
committer | William Desportes <williamdes@wdes.fr> | 2019-12-31 12:24:51 +0100 |
commit | 2bf3d1a17ce63ae2fdf1db58e474ce22d813a8bf (patch) | |
tree | eacb798c84e9bd41e03e52c509aad3c10f37afc4 /tests | |
parent | 997dd4a5e7648199b4e3624791d68a4af619a718 (diff) | |
parent | e763bc711fbb5e5848884d4bd19fded9dc0c85f0 (diff) | |
download | sql-parser-2bf3d1a17ce63ae2fdf1db58e474ce22d813a8bf.zip sql-parser-2bf3d1a17ce63ae2fdf1db58e474ce22d813a8bf.tar.gz sql-parser-2bf3d1a17ce63ae2fdf1db58e474ce22d813a8bf.tar.bz2 |
Merge #276 - add missing options in SET statement
Pull-request: #276
Fixes: #255
Signed-off-by: William Desportes <williamdes@wdes.fr>
Diffstat (limited to 'tests')
-rw-r--r-- | tests/Builder/SetStatementTest.php | 110 | ||||
-rw-r--r-- | tests/data/parser/parseSetError1.out | 2 |
2 files changed, 111 insertions, 1 deletions
diff --git a/tests/Builder/SetStatementTest.php b/tests/Builder/SetStatementTest.php index 746e92f..771762e 100644 --- a/tests/Builder/SetStatementTest.php +++ b/tests/Builder/SetStatementTest.php @@ -63,5 +63,115 @@ class SetStatementTest extends TestCase 'SET NAMES \'utf8\' DEFAULT', $stmt->build() ); + + /* Assertion 6 */ + $query = 'SET sql_mode = \'TRADITIONAL\''; + + $parser = new Parser($query); + $stmt = $parser->statements[0]; + + $this->assertEquals( + 'SET sql_mode = \'TRADITIONAL\'', + $stmt->build() + ); + + /* Assertion 7 */ + $query = 'SET SESSION sql_mode = \'TRADITIONAL\''; + + $parser = new Parser($query); + $stmt = $parser->statements[0]; + + $this->assertEquals( + 'SET SESSION sql_mode = \'TRADITIONAL\'', + $stmt->build() + ); + + /* Assertion 8 */ + $query = 'SET GLOBAL sql_mode = \'TRADITIONAL\''; + + $parser = new Parser($query); + $stmt = $parser->statements[0]; + + $this->assertEquals( + 'SET GLOBAL sql_mode = \'TRADITIONAL\'', + $stmt->build() + ); + + /* Assertion 9 */ + $query = 'SET @@SESSION sql_mode = \'TRADITIONAL\''; + + $parser = new Parser($query); + $stmt = $parser->statements[0]; + + $this->assertEquals( + 'SET SESSION sql_mode = \'TRADITIONAL\'', + $stmt->build() + ); + + /* Assertion 10 */ + $query = 'SET @@GLOBAL sql_mode = \'TRADITIONAL\''; + + $parser = new Parser($query); + $stmt = $parser->statements[0]; + + $this->assertEquals( + 'SET GLOBAL sql_mode = \'TRADITIONAL\'', + $stmt->build() + ); + + /* Assertion 11 */ + $query = 'SET @@sql_mode = \'TRADITIONAL\''; + + $parser = new Parser($query); + $stmt = $parser->statements[0]; + + $this->assertEquals( + 'SET @@sql_mode = \'TRADITIONAL\'', + $stmt->build() + ); + + /* Assertion 12 */ + $query = 'SET PERSIST sql_mode = \'TRADITIONAL\''; + + $parser = new Parser($query); + $stmt = $parser->statements[0]; + + $this->assertEquals( + 'SET PERSIST sql_mode = \'TRADITIONAL\'', + $stmt->build() + ); + + /* Assertion 13 */ + $query = 'SET PERSIST_ONLY sql_mode = \'TRADITIONAL\''; + + $parser = new Parser($query); + $stmt = $parser->statements[0]; + + $this->assertEquals( + 'SET PERSIST_ONLY sql_mode = \'TRADITIONAL\'', + $stmt->build() + ); + + /* Assertion 14 */ + $query = 'SET @@PERSIST sql_mode = \'TRADITIONAL\''; + + $parser = new Parser($query); + $stmt = $parser->statements[0]; + + $this->assertEquals( + 'SET PERSIST sql_mode = \'TRADITIONAL\'', + $stmt->build() + ); + + /* Assertion 15 */ + $query = 'SET @@PERSIST_ONLY sql_mode = \'TRADITIONAL\''; + + $parser = new Parser($query); + $stmt = $parser->statements[0]; + + $this->assertEquals( + 'SET PERSIST_ONLY sql_mode = \'TRADITIONAL\'', + $stmt->build() + ); } } diff --git a/tests/data/parser/parseSetError1.out b/tests/data/parser/parseSetError1.out index 5db7717..e9c2fd6 100644 --- a/tests/data/parser/parseSetError1.out +++ b/tests/data/parser/parseSetError1.out @@ -1 +1 @@ -a:4:{s:5:"query";s:39:"SET CHARSET 'utf8' CHARACTER SET 'utf8'";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:39:"SET CHARSET 'utf8' CHARACTER SET 'utf8'";s:3:"len";i:39;s:4:"last";i:39;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:10:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"SET";s:5:"value";s:3:"SET";s:7:"keyword";s:3:"SET";s:4:"type";i:1;s:5:"flags";i:11;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:3;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"CHARSET";s:5:"value";s:7:"CHARSET";s:7:"keyword";s:7:"CHARSET";s:4:"type";i:1;s:5:"flags";i:33;s:8:"position";i:4;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:11;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"'utf8'";s:5:"value";s:4:"utf8";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:1;s:8:"position";i:12;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:18;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:13:"CHARACTER SET";s:5:"value";s:13:"CHARACTER SET";s:7:"keyword";s:13:"CHARACTER SET";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:19;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:32;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"'utf8'";s:5:"value";s:4:"utf8";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:1;s:8:"position";i:33;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:10;s:3:"idx";i:10;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:44:"PhpMyAdmin\SqlParser\Statements\SetStatement":4:{s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:2:{i:3;a:4:{s:4:"name";s:7:"CHARSET";s:6:"equals";b:0;s:4:"expr";s:6:"'utf8'";s:5:"value";s:4:"utf8";}i:5;a:4:{s:4:"name";s:13:"CHARACTER SET";s:6:"equals";b:0;s:4:"expr";s:6:"'utf8'";s:5:"value";s:4:"utf8";}}}s:3:"set";a:0:{}s:5:"first";i:0;s:4:"last";i:8;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:1:{i:0;a:3:{i:0;s:37:"This option conflicts with "CHARSET".";i:1;r:51;i:2;i:0;}}}}
\ No newline at end of file +a:4:{s:5:"query";s:39:"SET CHARSET 'utf8' CHARACTER SET 'utf8'";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:39:"SET CHARSET 'utf8' CHARACTER SET 'utf8'";s:3:"len";i:39;s:4:"last";i:39;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:10:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"SET";s:5:"value";s:3:"SET";s:7:"keyword";s:3:"SET";s:4:"type";i:1;s:5:"flags";i:11;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:3;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"CHARSET";s:5:"value";s:7:"CHARSET";s:7:"keyword";s:7:"CHARSET";s:4:"type";i:1;s:5:"flags";i:33;s:8:"position";i:4;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:11;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"'utf8'";s:5:"value";s:4:"utf8";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:1;s:8:"position";i:12;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:18;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:13:"CHARACTER SET";s:5:"value";s:13:"CHARACTER SET";s:7:"keyword";s:13:"CHARACTER SET";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:19;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:32;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"'utf8'";s:5:"value";s:4:"utf8";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:1;s:8:"position";i:33;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:10;s:3:"idx";i:10;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:44:"PhpMyAdmin\SqlParser\Statements\SetStatement":5:{s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:2:{i:3;a:4:{s:4:"name";s:7:"CHARSET";s:6:"equals";b:0;s:4:"expr";s:6:"'utf8'";s:5:"value";s:4:"utf8";}i:13;a:4:{s:4:"name";s:13:"CHARACTER SET";s:6:"equals";b:0;s:4:"expr";s:6:"'utf8'";s:5:"value";s:4:"utf8";}}}s:11:"end_options";N;s:3:"set";a:0:{}s:5:"first";i:0;s:4:"last";i:8;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:1:{i:0;a:3:{i:0;s:37:"This option conflicts with "CHARSET".";i:1;r:51;i:2;i:0;}}}}
\ No newline at end of file |