summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorDeven Bansod <devenbansod.bits@gmail.com>2019-12-29 14:52:33 -0500
committerDeven Bansod <devenbansod.bits@gmail.com>2019-12-29 15:27:54 -0500
commite763bc711fbb5e5848884d4bd19fded9dc0c85f0 (patch)
tree48ef150a6d3605f95542bbcb67f0d94f3bcb9b4e /tests
parent2c8e384a349595ad13790ca3a5357f24af916345 (diff)
downloadsql-parser-e763bc711fbb5e5848884d4bd19fded9dc0c85f0.zip
sql-parser-e763bc711fbb5e5848884d4bd19fded9dc0c85f0.tar.gz
sql-parser-e763bc711fbb5e5848884d4bd19fded9dc0c85f0.tar.bz2
fix #255: add missing options in SET statement
Diffstat (limited to 'tests')
-rw-r--r--tests/Builder/SetStatementTest.php110
-rw-r--r--tests/data/parser/parseSetError1.out2
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