diff options
author | Michal Čihař <michal@cihar.com> | 2017-02-20 08:03:53 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-02-20 08:03:53 +0100 |
commit | 7222c2cb9a8260f774bf0635a7a0daa20487ff6e (patch) | |
tree | d05a632f7f0961b18e75da12f9687255e1560a3b /tests | |
parent | 574ebe2340aadcbbebe0659a80e11026ebdad210 (diff) | |
parent | f5b511c8fff580196f2efe090a06709ce748bf10 (diff) | |
download | sql-parser-7222c2cb9a8260f774bf0635a7a0daa20487ff6e.zip sql-parser-7222c2cb9a8260f774bf0635a7a0daa20487ff6e.tar.gz sql-parser-7222c2cb9a8260f774bf0635a7a0daa20487ff6e.tar.bz2 |
Merge pull request #143 from devenbansod/fix_131
Parse LOAD statement properly
Diffstat (limited to 'tests')
27 files changed, 280 insertions, 0 deletions
diff --git a/tests/Builder/LoadStatementTest.php b/tests/Builder/LoadStatementTest.php new file mode 100644 index 0000000..2ef6236 --- /dev/null +++ b/tests/Builder/LoadStatementTest.php @@ -0,0 +1,111 @@ +<?php + +namespace PhpMyAdmin\SqlParser\Tests\Builder; + +use PhpMyAdmin\SqlParser\Parser; +use PhpMyAdmin\SqlParser\Tests\TestCase; + +class LoadStatementTest extends TestCase +{ + public function testBuilder() + { + /* Assertion 1 */ + $query = 'LOAD DATA CONCURRENT INFILE ' + . '\'employee1.txt\' INTO TABLE employee'; + + $parser = new Parser($query); + $stmt = $parser->statements[0]; + + $this->assertEquals( + 'LOAD DATA CONCURRENT INFILE ' + . '\'employee1.txt\' INTO TABLE employee', + $stmt->build() + ); + + /* Assertion 2 */ + $query = 'LOAD DATA INFILE \'/tmp/test.txt\' ' + . 'INTO TABLE test FIELDS TERMINATED BY ' + . '\',\' IGNORE 1 LINES'; + + $parser = new Parser($query); + $stmt = $parser->statements[0]; + + $this->assertEquals( + 'LOAD DATA INFILE \'/tmp/test.txt\' ' + . 'INTO TABLE test FIELDS TERMINATED BY ' + . '\',\' IGNORE 1 LINES', + $stmt->build() + ); + + + /* Assertion 3 */ + $query = 'LOAD DATA INFILE \'employee3.txt\' ' + . 'INTO TABLE employee FIELDS TERMINATED BY ' + . '\',\' ENCLOSED BY \'"\''; + + $parser = new Parser($query); + $stmt = $parser->statements[0]; + + $this->assertEquals( + 'LOAD DATA INFILE \'employee3.txt\' ' + . 'INTO TABLE employee FIELDS TERMINATED BY ' + . '\',\' ENCLOSED BY \'"\'', + $stmt->build() + ); + + + /* Assertion 4 */ + $query = 'LOAD DATA INFILE \'/tmp/test.txt\' IGNORE ' + . 'INTO TABLE test ' + . 'CHARACTER SET \'utf8\' ' + . 'COLUMNS TERMINATED BY \',\' ' + . 'LINES TERMINATED BY \';\' ' + . 'IGNORE 1 LINES (col1, col2) SET @a = 1'; + + $parser = new Parser($query); + $stmt = $parser->statements[0]; + + $this->assertEquals( + 'LOAD DATA INFILE \'/tmp/test.txt\' IGNORE ' + . 'INTO TABLE test ' + . 'CHARACTER SET \'utf8\' ' + . 'COLUMNS TERMINATED BY \',\' ' + . 'LINES TERMINATED BY \';\' ' + . 'IGNORE 1 LINES (col1, col2) SET @a = 1', + $stmt->build() + ); + + + /* Assertion 5 */ + $query = 'LOAD DATA INFILE \'/tmp/test.txt\' REPLACE ' + . 'INTO TABLE test COLUMNS TERMINATED BY \',\' IGNORE 1 ROWS'; + + $parser = new Parser($query); + $stmt = $parser->statements[0]; + + $this->assertEquals( + 'LOAD DATA INFILE \'/tmp/test.txt\' REPLACE ' + . 'INTO TABLE test COLUMNS TERMINATED BY \',\' IGNORE 1 ROWS', + $stmt->build() + ); + + + /* Assertion 6 */ + $query = 'LOAD DATA INFILE \'/tmp/test.txt\' IGNORE ' + . 'INTO TABLE test PARTITION (p0, p1, p2) CHARACTER SET \'utf8\' ' + . 'COLUMNS TERMINATED BY \',\' LINES TERMINATED BY \';\' ' + . 'IGNORE 1 LINES (col1, col2) SET @a = 1'; + + $parser = new Parser($query); + $stmt = $parser->statements[0]; + + $this->assertEquals( + 'LOAD DATA INFILE \'/tmp/test.txt\' IGNORE ' + . 'INTO TABLE test PARTITION (p0, p1, p2) CHARACTER SET \'utf8\' ' + . 'COLUMNS TERMINATED BY \',\' LINES TERMINATED BY \';\' ' + . 'IGNORE 1 LINES (col1, col2) SET @a = 1', + $stmt->build() + ); + } + +} diff --git a/tests/Parser/LoadStatementTest.php b/tests/Parser/LoadStatementTest.php new file mode 100644 index 0000000..32b5707 --- /dev/null +++ b/tests/Parser/LoadStatementTest.php @@ -0,0 +1,45 @@ +<?php + +namespace PhpMyAdmin\SqlParser\Tests\Parser; + +use PhpMyAdmin\SqlParser\Parser; +use PhpMyAdmin\SqlParser\Tests\TestCase; + +class LoadStatementTest extends TestCase +{ + public function testLoadOptions() + { + $data = $this->getData('parser/parseLoad1'); + $parser = new Parser($data['query']); + $stmt = $parser->statements[0]; + $this->assertEquals(10, $stmt->options->has('CONCURRENT')); + } + + /** + * @dataProvider testLoadProvider + * + * @param mixed $test + */ + public function testLoad($test) + { + $this->runParserTest($test); + } + + public function testLoadProvider() + { + return array( + array('parser/parseLoad1'), + array('parser/parseLoad2'), + array('parser/parseLoad3'), + array('parser/parseLoad4'), + array('parser/parseLoad5'), + array('parser/parseLoad6'), + array('parser/parseLoadErr1'), + array('parser/parseLoadErr2'), + array('parser/parseLoadErr3'), + array('parser/parseLoadErr4'), + array('parser/parseLoadErr5'), + array('parser/parseLoadErr6') + ); + } +} diff --git a/tests/Utils/QueryTest.php b/tests/Utils/QueryTest.php index faae263..9f54b7b 100644 --- a/tests/Utils/QueryTest.php +++ b/tests/Utils/QueryTest.php @@ -85,6 +85,14 @@ class QueryTest extends TestCase ), ), array( + 'LOAD DATA INFILE \'/tmp/test.txt\' INTO TABLE test', + array( + 'is_affected' => true, + 'is_insert' => true, + 'querytype' => 'LOAD', + ), + ), + array( 'INSERT INTO tbl VALUES (1)', array( 'is_affected' => true, diff --git a/tests/data/parser/parseLoad1.in b/tests/data/parser/parseLoad1.in new file mode 100644 index 0000000..2657630 --- /dev/null +++ b/tests/data/parser/parseLoad1.in @@ -0,0 +1 @@ +LOAD DATA CONCURRENT INFILE 'employee1.txt' INTO TABLE employee;
\ No newline at end of file diff --git a/tests/data/parser/parseLoad1.out b/tests/data/parser/parseLoad1.out new file mode 100644 index 0000000..52f8762 --- /dev/null +++ b/tests/data/parser/parseLoad1.out @@ -0,0 +1 @@ +a:4:{s:5:"query";s:64:"LOAD DATA CONCURRENT INFILE 'employee1.txt' INTO TABLE employee;";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:64:"LOAD DATA CONCURRENT INFILE 'employee1.txt' INTO TABLE employee;";s:3:"len";i:64;s:4:"last";i:64;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:15:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:9:"LOAD DATA";s:5:"value";s:9:"LOAD DATA";s:7:"keyword";s:9:"LOAD DATA";s:4:"type";i:1;s:5:"flags";i:7;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:9;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:10:"CONCURRENT";s:5:"value";s:10:"CONCURRENT";s:7:"keyword";s:10:"CONCURRENT";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:10;}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:20;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"INFILE";s:5:"value";s:6:"INFILE";s:7:"keyword";s:6:"INFILE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:21;}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:27;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:15:"'employee1.txt'";s:5:"value";s:13:"employee1.txt";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:1;s:8:"position";i:28;}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:43;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"INTO";s:5:"value";s:4:"INTO";s:7:"keyword";s:4:"INTO";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:44;}i:9;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:48;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"TABLE";s:5:"value";s:5:"TABLE";s:7:"keyword";s:5:"TABLE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:49;}i:11;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:54;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"employee";s:5:"value";s:8:"employee";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:55;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:63;}i:14;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:15;s:3:"idx";i:15;}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:45:"PhpMyAdmin\SqlParser\Statements\LoadStatement":15:{s:9:"file_name";O:42:"PhpMyAdmin\SqlParser\Components\Expression":8:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:15:"'employee1.txt'";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;s:4:"file";s:13:"employee1.txt";}s:5:"table";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:8:"employee";s:6:"column";N;s:4:"expr";s:8:"employee";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:9:"partition";N;s:12:"charset_name";N;s:14:"fields_options";N;s:14:"fields_keyword";N;s:13:"lines_options";N;s:20:"col_name_or_user_var";N;s:3:"set";N;s:13:"ignore_number";N;s:14:"replace_ignore";N;s:10:"lines_rows";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:1;s:10:"CONCURRENT";}}s:5:"first";i:0;s:4:"last";i:12;}}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:0:{}}}
\ No newline at end of file diff --git a/tests/data/parser/parseLoad2.in b/tests/data/parser/parseLoad2.in new file mode 100644 index 0000000..7e6a8ba --- /dev/null +++ b/tests/data/parser/parseLoad2.in @@ -0,0 +1 @@ +LOAD DATA INFILE '/tmp/test.txt' INTO TABLE test FIELDS TERMINATED BY ',' IGNORE 1 LINES;
\ No newline at end of file diff --git a/tests/data/parser/parseLoad2.out b/tests/data/parser/parseLoad2.out new file mode 100644 index 0000000..9cfdb39 --- /dev/null +++ b/tests/data/parser/parseLoad2.out @@ -0,0 +1 @@ +a:4:{s:5:"query";s:89:"LOAD DATA INFILE '/tmp/test.txt' INTO TABLE test FIELDS TERMINATED BY ',' IGNORE 1 LINES;";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:89:"LOAD DATA INFILE '/tmp/test.txt' INTO TABLE test FIELDS TERMINATED BY ',' IGNORE 1 LINES;";s:3:"len";i:89;s:4:"last";i:89;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:25:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:9:"LOAD DATA";s:5:"value";s:9:"LOAD DATA";s:7:"keyword";s:9:"LOAD DATA";s:4:"type";i:1;s:5:"flags";i:7;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:9;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"INFILE";s:5:"value";s:6:"INFILE";s:7:"keyword";s:6:"INFILE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:10;}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:16;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:15:"'/tmp/test.txt'";s:5:"value";s:13:"/tmp/test.txt";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:1;s:8:"position";i:17;}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:32;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"INTO";s:5:"value";s:4:"INTO";s:7:"keyword";s:4:"INTO";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:33;}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:37;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"TABLE";s:5:"value";s:5:"TABLE";s:7:"keyword";s:5:"TABLE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:38;}i:9;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:43;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"test";s:5:"value";s:4:"test";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:44;}i:11;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:48;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"FIELDS";s:5:"value";s:6:"FIELDS";s:7:"keyword";s:6:"FIELDS";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:49;}i:13;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:55;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:13:"TERMINATED BY";s:5:"value";s:13:"TERMINATED BY";s:7:"keyword";s:13:"TERMINATED BY";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:56;}i:15;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:69;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"','";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:1;s:8:"position";i:70;}i:17;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:73;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"IGNORE";s:5:"value";s:6:"IGNORE";s:7:"keyword";s:6:"IGNORE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:74;}i:19;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:80;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:81;}i:21;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:82;}i:22;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"LINES";s:5:"value";s:5:"LINES";s:7:"keyword";s:5:"LINES";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:83;}i:23;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:88;}i:24;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:25;s:3:"idx";i:25;}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:45:"PhpMyAdmin\SqlParser\Statements\LoadStatement":15:{s:9:"file_name";O:42:"PhpMyAdmin\SqlParser\Components\Expression":8:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:15:"'/tmp/test.txt'";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;s:4:"file";s:13:"/tmp/test.txt";}s:5:"table";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:4:"test";s:6:"column";N;s:4:"expr";s:4:"test";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:9:"partition";N;s:12:"charset_name";N;s:14:"fields_options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:1;a:4:{s:4:"name";s:13:"TERMINATED BY";s:6:"equals";b:0;s:4:"expr";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:1:",";s:4:"expr";s:3:"','";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:5:"value";s:3:"','";}}}s:14:"fields_keyword";s:6:"FIELDS";s:13:"lines_options";N;s:20:"col_name_or_user_var";N;s:3:"set";N;s:13:"ignore_number";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:1:"1";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:14:"replace_ignore";N;s:10:"lines_rows";s:5:"LINES";s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:5:"first";i:0;s:4:"last";i:23;}}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:0:{}}}
\ No newline at end of file diff --git a/tests/data/parser/parseLoad3.in b/tests/data/parser/parseLoad3.in new file mode 100644 index 0000000..1915b86 --- /dev/null +++ b/tests/data/parser/parseLoad3.in @@ -0,0 +1 @@ +LOAD DATA INFILE 'employee3.txt' INTO TABLE employee FIELDS TERMINATED BY ',' ENCLOSED BY '"';
\ No newline at end of file diff --git a/tests/data/parser/parseLoad3.out b/tests/data/parser/parseLoad3.out new file mode 100644 index 0000000..e7fbdf5 --- /dev/null +++ b/tests/data/parser/parseLoad3.out @@ -0,0 +1 @@ +a:4:{s:5:"query";s:94:"LOAD DATA INFILE 'employee3.txt' INTO TABLE employee FIELDS TERMINATED BY ',' ENCLOSED BY '"';";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:94:"LOAD DATA INFILE 'employee3.txt' INTO TABLE employee FIELDS TERMINATED BY ',' ENCLOSED BY '"';";s:3:"len";i:94;s:4:"last";i:94;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:23:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:9:"LOAD DATA";s:5:"value";s:9:"LOAD DATA";s:7:"keyword";s:9:"LOAD DATA";s:4:"type";i:1;s:5:"flags";i:7;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:9;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"INFILE";s:5:"value";s:6:"INFILE";s:7:"keyword";s:6:"INFILE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:10;}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:16;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:15:"'employee3.txt'";s:5:"value";s:13:"employee3.txt";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:1;s:8:"position";i:17;}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:32;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"INTO";s:5:"value";s:4:"INTO";s:7:"keyword";s:4:"INTO";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:33;}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:37;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"TABLE";s:5:"value";s:5:"TABLE";s:7:"keyword";s:5:"TABLE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:38;}i:9;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:43;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"employee";s:5:"value";s:8:"employee";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:44;}i:11;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:52;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"FIELDS";s:5:"value";s:6:"FIELDS";s:7:"keyword";s:6:"FIELDS";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:53;}i:13;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:59;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:13:"TERMINATED BY";s:5:"value";s:13:"TERMINATED BY";s:7:"keyword";s:13:"TERMINATED BY";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:60;}i:15;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:73;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"','";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:1;s:8:"position";i:74;}i:17;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:77;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:11:"ENCLOSED BY";s:5:"value";s:11:"ENCLOSED BY";s:7:"keyword";s:11:"ENCLOSED BY";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:78;}i:19;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:89;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"'"'";s:5:"value";s:1:""";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:1;s:8:"position";i:90;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:93;}i:22;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:23;s:3:"idx";i:23;}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:45:"PhpMyAdmin\SqlParser\Statements\LoadStatement":15:{s:9:"file_name";O:42:"PhpMyAdmin\SqlParser\Components\Expression":8:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:15:"'employee3.txt'";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;s:4:"file";s:13:"employee3.txt";}s:5:"table";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:8:"employee";s:6:"column";N;s:4:"expr";s:8:"employee";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:9:"partition";N;s:12:"charset_name";N;s:14:"fields_options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:2:{i:1;a:4:{s:4:"name";s:13:"TERMINATED BY";s:6:"equals";b:0;s:4:"expr";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:1:",";s:4:"expr";s:3:"','";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:5:"value";s:3:"','";}i:3;a:4:{s:4:"name";s:11:"ENCLOSED BY";s:6:"equals";b:0;s:4:"expr";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:1:""";s:4:"expr";s:3:"'"'";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:5:"value";s:3:"'"'";}}}s:14:"fields_keyword";s:6:"FIELDS";s:13:"lines_options";N;s:20:"col_name_or_user_var";N;s:3:"set";N;s:13:"ignore_number";N;s:14:"replace_ignore";N;s:10:"lines_rows";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:5:"first";i:0;s:4:"last";i:20;}}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:0:{}}}
\ No newline at end of file diff --git a/tests/data/parser/parseLoad4.in b/tests/data/parser/parseLoad4.in new file mode 100644 index 0000000..9c57839 --- /dev/null +++ b/tests/data/parser/parseLoad4.in @@ -0,0 +1,8 @@ +LOAD DATA INFILE '/tmp/test.txt' IGNORE +INTO TABLE test +CHARACTER SET 'utf8' +COLUMNS TERMINATED BY ',' +LINES TERMINATED BY ';' +IGNORE 1 LINES +(col1, col2) +SET @a = 1;
\ No newline at end of file diff --git a/tests/data/parser/parseLoad4.out b/tests/data/parser/parseLoad4.out new file mode 100644 index 0000000..f0ba147 --- /dev/null +++ b/tests/data/parser/parseLoad4.out @@ -0,0 +1,22 @@ +a:4:{s:5:"query";s:166:"LOAD DATA INFILE '/tmp/test.txt' IGNORE +INTO TABLE test +CHARACTER SET 'utf8' +COLUMNS TERMINATED BY ',' +LINES TERMINATED BY ';' +IGNORE 1 LINES +(col1, col2) +SET @a = 1;";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:166:"LOAD DATA INFILE '/tmp/test.txt' IGNORE +INTO TABLE test +CHARACTER SET 'utf8' +COLUMNS TERMINATED BY ',' +LINES TERMINATED BY ';' +IGNORE 1 LINES +(col1, col2) +SET @a = 1;";s:3:"len";i:166;s:4:"last";i:166;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:52:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:9:"LOAD DATA";s:5:"value";s:9:"LOAD DATA";s:7:"keyword";s:9:"LOAD DATA";s:4:"type";i:1;s:5:"flags";i:7;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:9;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"INFILE";s:5:"value";s:6:"INFILE";s:7:"keyword";s:6:"INFILE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:10;}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:16;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:15:"'/tmp/test.txt'";s:5:"value";s:13:"/tmp/test.txt";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:1;s:8:"position";i:17;}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:32;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"IGNORE";s:5:"value";s:6:"IGNORE";s:7:"keyword";s:6:"IGNORE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:33;}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:39;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"INTO";s:5:"value";s:4:"INTO";s:7:"keyword";s:4:"INTO";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:40;}i:9;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:44;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"TABLE";s:5:"value";s:5:"TABLE";s:7:"keyword";s:5:"TABLE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:45;}i:11;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:50;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"test";s:5:"value";s:4:"test";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:51;}i:13;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:55;}i:14;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:56;}i:15;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:69;}i:16;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:70;}i:17;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:76;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"COLUMNS";s:5:"value";s:7:"COLUMNS";s:7:"keyword";s:7:"COLUMNS";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:77;}i:19;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:84;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:13:"TERMINATED BY";s:5:"value";s:13:"TERMINATED BY";s:7:"keyword";s:13:"TERMINATED BY";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:85;}i:21;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:98;}i:22;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"','";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:1;s:8:"position";i:99;}i:23;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:102;}i:24;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"LINES";s:5:"value";s:5:"LINES";s:7:"keyword";s:5:"LINES";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:103;}i:25;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:108;}i:26;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:13:"TERMINATED BY";s:5:"value";s:13:"TERMINATED BY";s:7:"keyword";s:13:"TERMINATED BY";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:109;}i:27;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:122;}i:28;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"';'";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:1;s:8:"position";i:123;}i:29;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:126;}i:30;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"IGNORE";s:5:"value";s:6:"IGNORE";s:7:"keyword";s:6:"IGNORE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:127;}i:31;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:133;}i:32;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:134;}i:33;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:135;}i:34;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"LINES";s:5:"value";s:5:"LINES";s:7:"keyword";s:5:"LINES";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:136;}i:35;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:141;}i:36;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:142;}i:37;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"col1";s:5:"value";s:4:"col1";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:143;}i:38;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:147;}i:39;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:148;}i:40;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"col2";s:5:"value";s:4:"col2";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:149;}i:41;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:153;}i:42;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:154;}i:43;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:155;}i:44;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:158;}i:45;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"@a";s:5:"value";s:1:"a";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:1;s:8:"position";i:159;}i:46;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:161;}i:47;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:162;}i:48;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:163;}i:49;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:164;}i:50;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:165;}i:51;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:52;s:3:"idx";i:52;}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:45:"PhpMyAdmin\SqlParser\Statements\LoadStatement":15:{s:9:"file_name";O:42:"PhpMyAdmin\SqlParser\Components\Expression":8:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:15:"'/tmp/test.txt'";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;s:4:"file";s:13:"/tmp/test.txt";}s:5:"table";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:4:"test";s:6:"column";N;s:4:"expr";s:4:"test";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:9:"partition";N;s:12:"charset_name";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:4:"utf8";s:4:"expr";s:6:"'utf8'";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:14:"fields_options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:1;a:4:{s:4:"name";s:13:"TERMINATED BY";s:6:"equals";b:0;s:4:"expr";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:1:",";s:4:"expr";s:3:"','";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:5:"value";s:3:"','";}}}s:14:"fields_keyword";s:7:"COLUMNS";s:13:"lines_options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:2;a:4:{s:4:"name";s:13:"TERMINATED BY";s:6:"equals";b:0;s:4:"expr";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:1:";";s:4:"expr";s:3:"';'";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:5:"value";s:3:"';'";}}}s:20:"col_name_or_user_var";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:12:"(col1, col2)";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:3:"set";a:1:{i:0;O:44:"PhpMyAdmin\SqlParser\Components\SetOperation":2:{s:6:"column";s:2:"@a";s:5:"value";s:1:"1";}}s:13:"ignore_number";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:1:"1";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:14:"replace_ignore";s:6:"IGNORE";s:10:"lines_rows";s:5:"LINES";s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:5:"first";i:0;s:4:"last";i:49;}}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:0:{}}}
\ No newline at end of file diff --git a/tests/data/parser/parseLoad5.in b/tests/data/parser/parseLoad5.in new file mode 100644 index 0000000..6b28b21 --- /dev/null +++ b/tests/data/parser/parseLoad5.in @@ -0,0 +1 @@ +LOAD DATA INFILE '/tmp/test.txt' REPLACE INTO TABLE test COLUMNS TERMINATED BY ',' IGNORE 1 ROWS;
\ No newline at end of file diff --git a/tests/data/parser/parseLoad5.out b/tests/data/parser/parseLoad5.out new file mode 100644 index 0000000..66753ed --- /dev/null +++ b/tests/data/parser/parseLoad5.out @@ -0,0 +1 @@ +a:4:{s:5:"query";s:98:"LOAD DATA INFILE '/tmp/test.txt' REPLACE INTO TABLE test COLUMNS TERMINATED BY ',' IGNORE 1 ROWS;";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:98:"LOAD DATA INFILE '/tmp/test.txt' REPLACE INTO TABLE test COLUMNS TERMINATED BY ',' IGNORE 1 ROWS;";s:3:"len";i:98;s:4:"last";i:98;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:27:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:9:"LOAD DATA";s:5:"value";s:9:"LOAD DATA";s:7:"keyword";s:9:"LOAD DATA";s:4:"type";i:1;s:5:"flags";i:7;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:9;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"INFILE";s:5:"value";s:6:"INFILE";s:7:"keyword";s:6:"INFILE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:10;}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:16;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:15:"'/tmp/test.txt'";s:5:"value";s:13:"/tmp/test.txt";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:1;s:8:"position";i:17;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:" ";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:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"REPLACE";s:5:"value";s:7:"REPLACE";s:7:"keyword";s:7:"REPLACE";s:4:"type";i:1;s:5:"flags";i:35;s:8:"position";i:34;}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:41;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"INTO";s:5:"value";s:4:"INTO";s:7:"keyword";s:4:"INTO";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:42;}i:9;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:46;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"TABLE";s:5:"value";s:5:"TABLE";s:7:"keyword";s:5:"TABLE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:47;}i:11;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:52;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"test";s:5:"value";s:4:"test";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:53;}i:13;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:57;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"COLUMNS";s:5:"value";s:7:"COLUMNS";s:7:"keyword";s:7:"COLUMNS";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:58;}i:15;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:65;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:13:"TERMINATED BY";s:5:"value";s:13:"TERMINATED BY";s:7:"keyword";s:13:"TERMINATED BY";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:66;}i:17;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:79;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"','";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:1;s:8:"position";i:80;}i:19;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:83;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"IGNORE";s:5:"value";s:6:"IGNORE";s:7:"keyword";s:6:"IGNORE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:84;}i:21;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:90;}i:22;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:91;}i:23;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:92;}i:24;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"ROWS";s:5:"value";s:4:"ROWS";s:7:"keyword";s:4:"ROWS";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:93;}i:25;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:97;}i:26;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:27;s:3:"idx";i:27;}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:45:"PhpMyAdmin\SqlParser\Statements\LoadStatement":15:{s:9:"file_name";O:42:"PhpMyAdmin\SqlParser\Components\Expression":8:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:15:"'/tmp/test.txt'";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;s:4:"file";s:13:"/tmp/test.txt";}s:5:"table";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:4:"test";s:6:"column";N;s:4:"expr";s:4:"test";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:9:"partition";N;s:12:"charset_name";N;s:14:"fields_options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:1;a:4:{s:4:"name";s:13:"TERMINATED BY";s:6:"equals";b:0;s:4:"expr";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:1:",";s:4:"expr";s:3:"','";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:5:"value";s:3:"','";}}}s:14:"fields_keyword";s:7:"COLUMNS";s:13:"lines_options";N;s:20:"col_name_or_user_var";N;s:3:"set";N;s:13:"ignore_number";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:1:"1";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:14:"replace_ignore";s:7:"REPLACE";s:10:"lines_rows";s:4:"ROWS";s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:5:"first";i:0;s:4:"last";i:25;}}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:0:{}}}
\ No newline at end of file diff --git a/tests/data/parser/parseLoad6.in b/tests/data/parser/parseLoad6.in new file mode 100644 index 0000000..b3436fc --- /dev/null +++ b/tests/data/parser/parseLoad6.in @@ -0,0 +1,9 @@ +LOAD DATA INFILE '/tmp/test.txt' IGNORE +INTO TABLE test +PARTITION (p0, p1, p2) +CHARACTER SET 'utf8' +COLUMNS TERMINATED BY ',' +LINES TERMINATED BY ';' +IGNORE 1 LINES +(col1, col2) +SET @a = 1;
\ No newline at end of file diff --git a/tests/data/parser/parseLoad6.out b/tests/data/parser/parseLoad6.out new file mode 100644 index 0000000..810c777 --- /dev/null +++ b/tests/data/parser/parseLoad6.out @@ -0,0 +1,25 @@ +a:4:{s:5:"query";s:189:"LOAD DATA INFILE '/tmp/test.txt' IGNORE +INTO TABLE test +PARTITION (p0, p1, p2) +CHARACTER SET 'utf8' +COLUMNS TERMINATED BY ',' +LINES TERMINATED BY ';' +IGNORE 1 LINES +(col1, col2) +SET @a = 1;";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:189:"LOAD DATA INFILE '/tmp/test.txt' IGNORE +INTO TABLE test +PARTITION (p0, p1, p2) +CHARACTER SET 'utf8' +COLUMNS TERMINATED BY ',' +LINES TERMINATED BY ';' +IGNORE 1 LINES +(col1, col2) +SET @a = 1;";s:3:"len";i:189;s:4:"last";i:189;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:64:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:9:"LOAD DATA";s:5:"value";s:9:"LOAD DATA";s:7:"keyword";s:9:"LOAD DATA";s:4:"type";i:1;s:5:"flags";i:7;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:9;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"INFILE";s:5:"value";s:6:"INFILE";s:7:"keyword";s:6:"INFILE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:10;}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:16;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:15:"'/tmp/test.txt'";s:5:"value";s:13:"/tmp/test.txt";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:1;s:8:"position";i:17;}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:32;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"IGNORE";s:5:"value";s:6:"IGNORE";s:7:"keyword";s:6:"IGNORE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:33;}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:39;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"INTO";s:5:"value";s:4:"INTO";s:7:"keyword";s:4:"INTO";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:40;}i:9;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:44;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"TABLE";s:5:"value";s:5:"TABLE";s:7:"keyword";s:5:"TABLE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:45;}i:11;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:50;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"test";s:5:"value";s:4:"test";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:51;}i:13;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:55;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:9:"PARTITION";s:5:"value";s:9:"PARTITION";s:7:"keyword";s:9:"PARTITION";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:56;}i:15;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:65;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:66;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"p0";s:5:"value";s:2:"p0";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:67;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:69;}i:19;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:70;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"p1";s:5:"value";s:2:"p1";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:71;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:73;}i:22;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:74;}i:23;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"p2";s:5:"value";s:2:"p2";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:75;}i:24;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:77;}i:25;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:78;}i:26;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:79;}i:27;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:92;}i:28;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:93;}i:29;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:99;}i:30;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"COLUMNS";s:5:"value";s:7:"COLUMNS";s:7:"keyword";s:7:"COLUMNS";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:100;}i:31;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:107;}i:32;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:13:"TERMINATED BY";s:5:"value";s:13:"TERMINATED BY";s:7:"keyword";s:13:"TERMINATED BY";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:108;}i:33;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:121;}i:34;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"','";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:1;s:8:"position";i:122;}i:35;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:125;}i:36;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"LINES";s:5:"value";s:5:"LINES";s:7:"keyword";s:5:"LINES";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:126;}i:37;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:131;}i:38;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:13:"TERMINATED BY";s:5:"value";s:13:"TERMINATED BY";s:7:"keyword";s:13:"TERMINATED BY";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:132;}i:39;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:145;}i:40;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"';'";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:1;s:8:"position";i:146;}i:41;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:149;}i:42;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"IGNORE";s:5:"value";s:6:"IGNORE";s:7:"keyword";s:6:"IGNORE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:150;}i:43;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:156;}i:44;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:157;}i:45;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:158;}i:46;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"LINES";s:5:"value";s:5:"LINES";s:7:"keyword";s:5:"LINES";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:159;}i:47;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:164;}i:48;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:165;}i:49;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"col1";s:5:"value";s:4:"col1";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:166;}i:50;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:170;}i:51;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:171;}i:52;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"col2";s:5:"value";s:4:"col2";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:172;}i:53;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:176;}i:54;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:177;}i:55;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:178;}i:56;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:181;}i:57;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"@a";s:5:"value";s:1:"a";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:1;s:8:"position";i:182;}i:58;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:184;}i:59;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:185;}i:60;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:186;}i:61;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:187;}i:62;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:188;}i:63;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:64;s:3:"idx";i:64;}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:45:"PhpMyAdmin\SqlParser\Statements\LoadStatement":15:{s:9:"file_name";O:42:"PhpMyAdmin\SqlParser\Components\Expression":8:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:15:"'/tmp/test.txt'";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;s:4:"file";s:13:"/tmp/test.txt";}s:5:"table";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:4:"test";s:6:"column";N;s:4:"expr";s:4:"test";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:9:"partition";O:40:"PhpMyAdmin\SqlParser\Components\ArrayObj":2:{s:3:"raw";a:3:{i:0;s:2:"p0";i:1;s:2:"p1";i:2;s:2:"p2";}s:6:"values";a:3:{i:0;s:2:"p0";i:1;s:2:"p1";i:2;s:2:"p2";}}s:12:"charset_name";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:4:"utf8";s:4:"expr";s:6:"'utf8'";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:14:"fields_options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:1;a:4:{s:4:"name";s:13:"TERMINATED BY";s:6:"equals";b:0;s:4:"expr";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:1:",";s:4:"expr";s:3:"','";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:5:"value";s:3:"','";}}}s:14:"fields_keyword";s:7:"COLUMNS";s:13:"lines_options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:2;a:4:{s:4:"name";s:13:"TERMINATED BY";s:6:"equals";b:0;s:4:"expr";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:1:";";s:4:"expr";s:3:"';'";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:5:"value";s:3:"';'";}}}s:20:"col_name_or_user_var";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:12:"(col1, col2)";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:3:"set";a:1:{i:0;O:44:"PhpMyAdmin\SqlParser\Components\SetOperation":2:{s:6:"column";s:2:"@a";s:5:"value";s:1:"1";}}s:13:"ignore_number";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:1:"1";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:14:"replace_ignore";s:6:"IGNORE";s:10:"lines_rows";s:5:"LINES";s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:5:"first";i:0;s:4:"last";i:61;}}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:0:{}}}
\ No newline at end of file diff --git a/tests/data/parser/parseLoadErr1.in b/tests/data/parser/parseLoadErr1.in new file mode 100644 index 0000000..f8a969a --- /dev/null +++ b/tests/data/parser/parseLoadErr1.in @@ -0,0 +1 @@ +LOAD DATA CONCURRENT FROM 'employee1.txt' INTO TABLE employee;
\ No newline at end of file diff --git a/tests/data/parser/parseLoadErr1.out b/tests/data/parser/parseLoadErr1.out new file mode 100644 index 0000000..81fda8e --- /dev/null +++ b/tests/data/parser/parseLoadErr1.out @@ -0,0 +1 @@ +a:4:{s:5:"query";s:62:"LOAD DATA CONCURRENT FROM 'employee1.txt' INTO TABLE employee;";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:62:"LOAD DATA CONCURRENT FROM 'employee1.txt' INTO TABLE employee;";s:3:"len";i:62;s:4:"last";i:62;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:15:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:9:"LOAD DATA";s:5:"value";s:9:"LOAD DATA";s:7:"keyword";s:9:"LOAD DATA";s:4:"type";i:1;s:5:"flags";i:7;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:9;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:10:"CONCURRENT";s:5:"value";s:10:"CONCURRENT";s:7:"keyword";s:10:"CONCURRENT";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:10;}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:20;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:21;}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:25;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:15:"'employee1.txt'";s:5:"value";s:13:"employee1.txt";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:1;s:8:"position";i:26;}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:41;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"INTO";s:5:"value";s:4:"INTO";s:7:"keyword";s:4:"INTO";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:42;}i:9;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:46;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"TABLE";s:5:"value";s:5:"TABLE";s:7:"keyword";s:5:"TABLE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:47;}i:11;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:52;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"employee";s:5:"value";s:8:"employee";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:53;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:61;}i:14;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:15;s:3:"idx";i:15;}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:45:"PhpMyAdmin\SqlParser\Statements\LoadStatement":15:{s:9:"file_name";N;s:5:"table";N;s:9:"partition";N;s:12:"charset_name";N;s:14:"fields_options";N;s:14:"fields_keyword";N;s:13:"lines_options";N;s:20:"col_name_or_user_var";N;s:3:"set";N;s:13:"ignore_number";N;s:14:"replace_ignore";N;s:10:"lines_rows";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:1;s:10:"CONCURRENT";}}s:5:"first";i:0;s:4:"last";i:3;}}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:2:{i:0;a:3:{i:0;s:19:"Unexpected keyword.";i:1;r:37;i:2;i:0;}i:1;a:3:{i:0;s:28:"Unrecognized statement type.";i:1;r:37;i:2;i:0;}}}}
\ No newline at end of file diff --git a/tests/data/parser/parseLoadErr2.in b/tests/data/parser/parseLoadErr2.in new file mode 100644 index 0000000..eeda0b4 --- /dev/null +++ b/tests/data/parser/parseLoadErr2.in @@ -0,0 +1 @@ +LOAD DATA CONCURRENT ABC 'employee1.txt' INTO TABLE employee;
\ No newline at end of file diff --git a/tests/data/parser/parseLoadErr2.out b/tests/data/parser/parseLoadErr2.out new file mode 100644 index 0000000..f5255ff --- /dev/null +++ b/tests/data/parser/parseLoadErr2.out @@ -0,0 +1 @@ +a:4:{s:5:"query";s:61:"LOAD DATA CONCURRENT ABC 'employee1.txt' INTO TABLE employee;";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:61:"LOAD DATA CONCURRENT ABC 'employee1.txt' INTO TABLE employee;";s:3:"len";i:61;s:4:"last";i:61;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:15:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:9:"LOAD DATA";s:5:"value";s:9:"LOAD DATA";s:7:"keyword";s:9:"LOAD DATA";s:4:"type";i:1;s:5:"flags";i:7;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:9;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:10:"CONCURRENT";s:5:"value";s:10:"CONCURRENT";s:7:"keyword";s:10:"CONCURRENT";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:10;}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:20;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"ABC";s:5:"value";s:3:"ABC";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:21;}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:24;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:15:"'employee1.txt'";s:5:"value";s:13:"employee1.txt";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:1;s:8:"position";i:25;}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:40;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"INTO";s:5:"value";s:4:"INTO";s:7:"keyword";s:4:"INTO";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:41;}i:9;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:45;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"TABLE";s:5:"value";s:5:"TABLE";s:7:"keyword";s:5:"TABLE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:46;}i:11;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:51;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"employee";s:5:"value";s:8:"employee";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:52;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:60;}i:14;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:15;s:3:"idx";i:15;}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:45:"PhpMyAdmin\SqlParser\Statements\LoadStatement":15:{s:9:"file_name";N;s:5:"table";N;s:9:"partition";N;s:12:"charset_name";N;s:14:"fields_options";N;s:14:"fields_keyword";N;s:13:"lines_options";N;s:20:"col_name_or_user_var";N;s:3:"set";N;s:13:"ignore_number";N;s:14:"replace_ignore";N;s:10:"lines_rows";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:1;s:10:"CONCURRENT";}}s:5:"first";i:0;s:4:"last";i:3;}}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:4:{i:0;a:3:{i:0;s:18:"Unexpected token1.";i:1;r:37;i:2;i:0;}i:1;a:3:{i:0;s:34:"Unexpected beginning of statement.";i:1;r:37;i:2;i:0;}i:2;a:3:{i:0;s:34:"Unexpected beginning of statement.";i:1;r:51;i:2;i:0;}i:3;a:3:{i:0;s:28:"Unrecognized statement type.";i:1;r:65;i:2;i:0;}}}}
\ No newline at end of file diff --git a/tests/data/parser/parseLoadErr3.in b/tests/data/parser/parseLoadErr3.in new file mode 100644 index 0000000..9dea8ab --- /dev/null +++ b/tests/data/parser/parseLoadErr3.in @@ -0,0 +1,3 @@ +LOAD DATA INFILE '/tmp/test.txt' IGNORE +INTO TABLE test +DATA @a = 1;
\ No newline at end of file diff --git a/tests/data/parser/parseLoadErr3.out b/tests/data/parser/parseLoadErr3.out new file mode 100644 index 0000000..97b5ed7 --- /dev/null +++ b/tests/data/parser/parseLoadErr3.out @@ -0,0 +1,7 @@ +a:4:{s:5:"query";s:68:"LOAD DATA INFILE '/tmp/test.txt' IGNORE +INTO TABLE test +DATA @a = 1;";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:68:"LOAD DATA INFILE '/tmp/test.txt' IGNORE +INTO TABLE test +DATA @a = 1;";s:3:"len";i:68;s:4:"last";i:68;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:23:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:9:"LOAD DATA";s:5:"value";s:9:"LOAD DATA";s:7:"keyword";s:9:"LOAD DATA";s:4:"type";i:1;s:5:"flags";i:7;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:9;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"INFILE";s:5:"value";s:6:"INFILE";s:7:"keyword";s:6:"INFILE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:10;}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:16;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:15:"'/tmp/test.txt'";s:5:"value";s:13:"/tmp/test.txt";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:1;s:8:"position";i:17;}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:32;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"IGNORE";s:5:"value";s:6:"IGNORE";s:7:"keyword";s:6:"IGNORE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:33;}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:39;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"INTO";s:5:"value";s:4:"INTO";s:7:"keyword";s:4:"INTO";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:40;}i:9;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:44;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"TABLE";s:5:"value";s:5:"TABLE";s:7:"keyword";s:5:"TABLE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:45;}i:11;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:50;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"test";s:5:"value";s:4:"test";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:51;}i:13;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:55;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"DATA";s:5:"value";s:4:"DATA";s:7:"keyword";s:4:"DATA";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:56;}i:15;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:60;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"@a";s:5:"value";s:1:"a";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:1;s:8:"position";i:61;}i:17;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:63;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:64;}i:19;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:65;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:66;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:67;}i:22;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:23;s:3:"idx";i:23;}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:45:"PhpMyAdmin\SqlParser\Statements\LoadStatement":15:{s:9:"file_name";O:42:"PhpMyAdmin\SqlParser\Components\Expression":8:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:15:"'/tmp/test.txt'";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;s:4:"file";s:13:"/tmp/test.txt";}s:5:"table";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:4:"test";s:6:"column";N;s:4:"expr";s:4:"test";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:9:"partition";N;s:12:"charset_name";N;s:14:"fields_options";N;s:14:"fields_keyword";N;s:13:"lines_options";N;s:20:"col_name_or_user_var";N;s:3:"set";N;s:13:"ignore_number";N;s:14:"replace_ignore";s:6:"IGNORE";s:10:"lines_rows";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:5:"first";i:0;s:4:"last";i:13;}}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:28:"Unrecognized statement type.";i:1;r:107;i:2;i:0;}}}}
\ No newline at end of file diff --git a/tests/data/parser/parseLoadErr4.in b/tests/data/parser/parseLoadErr4.in new file mode 100644 index 0000000..44ca3fe --- /dev/null +++ b/tests/data/parser/parseLoadErr4.in @@ -0,0 +1,3 @@ +LOAD DATA INFILE '/tmp/test.txt' IGNORE +INTO test +DATA @a = 1;
\ No newline at end of file diff --git a/tests/data/parser/parseLoadErr4.out b/tests/data/parser/parseLoadErr4.out new file mode 100644 index 0000000..0831df9 --- /dev/null +++ b/tests/data/parser/parseLoadErr4.out @@ -0,0 +1,7 @@ +a:4:{s:5:"query";s:62:"LOAD DATA INFILE '/tmp/test.txt' IGNORE +INTO test +DATA @a = 1;";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:62:"LOAD DATA INFILE '/tmp/test.txt' IGNORE +INTO test +DATA @a = 1;";s:3:"len";i:62;s:4:"last";i:62;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:21:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:9:"LOAD DATA";s:5:"value";s:9:"LOAD DATA";s:7:"keyword";s:9:"LOAD DATA";s:4:"type";i:1;s:5:"flags";i:7;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:9;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"INFILE";s:5:"value";s:6:"INFILE";s:7:"keyword";s:6:"INFILE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:10;}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:16;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:15:"'/tmp/test.txt'";s:5:"value";s:13:"/tmp/test.txt";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:1;s:8:"position";i:17;}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:32;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"IGNORE";s:5:"value";s:6:"IGNORE";s:7:"keyword";s:6:"IGNORE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:33;}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:39;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"INTO";s:5:"value";s:4:"INTO";s:7:"keyword";s:4:"INTO";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:40;}i:9;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:44;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"test";s:5:"value";s:4:"test";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:45;}i:11;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:49;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"DATA";s:5:"value";s:4:"DATA";s:7:"keyword";s:4:"DATA";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:50;}i:13;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:54;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"@a";s:5:"value";s:1:"a";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:1;s:8:"position";i:55;}i:15;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:57;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:58;}i:17;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:59;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:60;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:61;}i:20;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:21;s:3:"idx";i:21;}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:45:"PhpMyAdmin\SqlParser\Statements\LoadStatement":15:{s:9:"file_name";O:42:"PhpMyAdmin\SqlParser\Components\Expression":8:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:15:"'/tmp/test.txt'";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;s:4:"file";s:13:"/tmp/test.txt";}s:5:"table";N;s:9:"partition";N;s:12:"charset_name";N;s:14:"fields_options";N;s:14:"fields_keyword";N;s:13:"lines_options";N;s:20:"col_name_or_user_var";N;s:3:"set";N;s:13:"ignore_number";N;s:14:"replace_ignore";s:6:"IGNORE";s:10:"lines_rows";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:5:"first";i:0;s:4:"last";i:9;}}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:3:{i:0;a:3:{i:0;s:18:"Unexpected token2.";i:1;r:79;i:2;i:0;}i:1;a:3:{i:0;s:34:"Unexpected beginning of statement.";i:1;r:79;i:2;i:0;}i:2;a:3:{i:0;s:28:"Unrecognized statement type.";i:1;r:93;i:2;i:0;}}}}
\ No newline at end of file diff --git a/tests/data/parser/parseLoadErr5.in b/tests/data/parser/parseLoadErr5.in new file mode 100644 index 0000000..0a21a6b --- /dev/null +++ b/tests/data/parser/parseLoadErr5.in @@ -0,0 +1,3 @@ +LOAD DATA INFILE '/tmp/test.txt' IGNORE +INTO TABLE test +@a = 1;
\ No newline at end of file diff --git a/tests/data/parser/parseLoadErr5.out b/tests/data/parser/parseLoadErr5.out new file mode 100644 index 0000000..12187aa --- /dev/null +++ b/tests/data/parser/parseLoadErr5.out @@ -0,0 +1,7 @@ +a:4:{s:5:"query";s:63:"LOAD DATA INFILE '/tmp/test.txt' IGNORE +INTO TABLE test +@a = 1;";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:63:"LOAD DATA INFILE '/tmp/test.txt' IGNORE +INTO TABLE test +@a = 1;";s:3:"len";i:63;s:4:"last";i:63;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:21:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:9:"LOAD DATA";s:5:"value";s:9:"LOAD DATA";s:7:"keyword";s:9:"LOAD DATA";s:4:"type";i:1;s:5:"flags";i:7;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:9;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"INFILE";s:5:"value";s:6:"INFILE";s:7:"keyword";s:6:"INFILE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:10;}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:16;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:15:"'/tmp/test.txt'";s:5:"value";s:13:"/tmp/test.txt";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:1;s:8:"position";i:17;}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:32;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"IGNORE";s:5:"value";s:6:"IGNORE";s:7:"keyword";s:6:"IGNORE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:33;}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:39;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"INTO";s:5:"value";s:4:"INTO";s:7:"keyword";s:4:"INTO";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:40;}i:9;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:44;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"TABLE";s:5:"value";s:5:"TABLE";s:7:"keyword";s:5:"TABLE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:45;}i:11;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:50;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"test";s:5:"value";s:4:"test";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:51;}i:13;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:55;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"@a";s:5:"value";s:1:"a";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:1;s:8:"position";i:56;}i:15;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:58;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:59;}i:17;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:60;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:61;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:62;}i:20;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:21;s:3:"idx";i:21;}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:45:"PhpMyAdmin\SqlParser\Statements\LoadStatement":15:{s:9:"file_name";O:42:"PhpMyAdmin\SqlParser\Components\Expression":8:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:15:"'/tmp/test.txt'";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;s:4:"file";s:13:"/tmp/test.txt";}s:5:"table";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:4:"test";s:6:"column";N;s:4:"expr";s:4:"test";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:9:"partition";N;s:12:"charset_name";N;s:14:"fields_options";N;s:14:"fields_keyword";N;s:13:"lines_options";N;s:20:"col_name_or_user_var";N;s:3:"set";N;s:13:"ignore_number";N;s:14:"replace_ignore";s:6:"IGNORE";s:10:"lines_rows";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:5:"first";i:0;s:4:"last";i:13;}}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:3:{i:0;a:3:{i:0;s:18:"Unexpected token3.";i:1;r:107;i:2;i:0;}i:1;a:3:{i:0;s:34:"Unexpected beginning of statement.";i:1;r:107;i:2;i:0;}i:2;a:3:{i:0;s:34:"Unexpected beginning of statement.";i:1;r:135;i:2;i:0;}}}}
\ No newline at end of file diff --git a/tests/data/parser/parseLoadErr6.in b/tests/data/parser/parseLoadErr6.in new file mode 100644 index 0000000..9dea8ab --- /dev/null +++ b/tests/data/parser/parseLoadErr6.in @@ -0,0 +1,3 @@ +LOAD DATA INFILE '/tmp/test.txt' IGNORE +INTO TABLE test +DATA @a = 1;
\ No newline at end of file diff --git a/tests/data/parser/parseLoadErr6.out b/tests/data/parser/parseLoadErr6.out new file mode 100644 index 0000000..97b5ed7 --- /dev/null +++ b/tests/data/parser/parseLoadErr6.out @@ -0,0 +1,7 @@ +a:4:{s:5:"query";s:68:"LOAD DATA INFILE '/tmp/test.txt' IGNORE +INTO TABLE test +DATA @a = 1;";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:68:"LOAD DATA INFILE '/tmp/test.txt' IGNORE +INTO TABLE test +DATA @a = 1;";s:3:"len";i:68;s:4:"last";i:68;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:23:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:9:"LOAD DATA";s:5:"value";s:9:"LOAD DATA";s:7:"keyword";s:9:"LOAD DATA";s:4:"type";i:1;s:5:"flags";i:7;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:9;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"INFILE";s:5:"value";s:6:"INFILE";s:7:"keyword";s:6:"INFILE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:10;}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:16;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:15:"'/tmp/test.txt'";s:5:"value";s:13:"/tmp/test.txt";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:1;s:8:"position";i:17;}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:32;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"IGNORE";s:5:"value";s:6:"IGNORE";s:7:"keyword";s:6:"IGNORE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:33;}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:39;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"INTO";s:5:"value";s:4:"INTO";s:7:"keyword";s:4:"INTO";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:40;}i:9;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:44;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"TABLE";s:5:"value";s:5:"TABLE";s:7:"keyword";s:5:"TABLE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:45;}i:11;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:50;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"test";s:5:"value";s:4:"test";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:51;}i:13;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:55;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"DATA";s:5:"value";s:4:"DATA";s:7:"keyword";s:4:"DATA";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:56;}i:15;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:60;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"@a";s:5:"value";s:1:"a";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:1;s:8:"position";i:61;}i:17;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:63;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:64;}i:19;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:65;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:66;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:67;}i:22;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:23;s:3:"idx";i:23;}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:45:"PhpMyAdmin\SqlParser\Statements\LoadStatement":15:{s:9:"file_name";O:42:"PhpMyAdmin\SqlParser\Components\Expression":8:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:15:"'/tmp/test.txt'";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;s:4:"file";s:13:"/tmp/test.txt";}s:5:"table";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:4:"test";s:6:"column";N;s:4:"expr";s:4:"test";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:9:"partition";N;s:12:"charset_name";N;s:14:"fields_options";N;s:14:"fields_keyword";N;s:13:"lines_options";N;s:20:"col_name_or_user_var";N;s:3:"set";N;s:13:"ignore_number";N;s:14:"replace_ignore";s:6:"IGNORE";s:10:"lines_rows";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:5:"first";i:0;s:4:"last";i:13;}}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:28:"Unrecognized statement type.";i:1;r:107;i:2;i:0;}}}}
\ No newline at end of file |