Skip to content

Commit 1f45fbc

Browse files
committed
Merge branch 'QA'
Signed-off-by: William Desportes <[email protected]>
2 parents 9ef51ad + 128b219 commit 1f45fbc

21 files changed

+180
-6
lines changed

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@
33
## [Unreleased] -
44

55
* Fix ALTER TABLE ... PRIMARY/UNIQUE KEY results in error (#267)
6+
* Prevent overwrite of offset in Limit clause by parenthesis (#275)
7+
* Allow SCHEMA to be used in CREATE Database statement (#231)
8+
* Add missing options in SET statement (#255)
69

710
## [5.1.0] - 2019-11-12
811

src/Components/Limit.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,11 @@ public static function parse(Parser $parser, TokensList $list, array $options =
8989
continue;
9090
}
9191

92+
// Skip if not a number
93+
if (($token->type !== Token::TYPE_NUMBER)) {
94+
break;
95+
}
96+
9297
if ($offset) {
9398
$ret->offset = $token->value;
9499
$offset = false;

src/Statements/CreateStatement.php

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ class CreateStatement extends Statement
6262
'TRIGGER' => 6,
6363
'USER' => 6,
6464
'VIEW' => 6,
65+
'SCHEMA' => 6,
6566

6667
// CREATE TABLE
6768
'IF NOT EXISTS' => 7,
@@ -378,7 +379,7 @@ public function build()
378379
$fields = ArrayObj::build($this->fields);
379380
}
380381
}
381-
if ($this->options->has('DATABASE')) {
382+
if ($this->options->has('DATABASE') || $this->options->has('SCHEMA')) {
382383
return 'CREATE '
383384
. OptionsArray::build($this->options) . ' '
384385
. Expression::build($this->name) . ' '
@@ -466,12 +467,15 @@ public function parse(Parser $parser, TokensList $list)
466467
$this->options = OptionsArray::parse($parser, $list, static::$OPTIONS);
467468
++$list->idx; // Skipping last option.
468469

470+
$isDatabase = $this->options->has('DATABASE') || $this->options->has('SCHEMA');
471+
$fieldName = $isDatabase ? 'database' : 'table';
472+
469473
// Parsing the field name.
470474
$this->name = Expression::parse(
471475
$parser,
472476
$list,
473477
[
474-
'parseField' => 'table',
478+
'parseField' => $fieldName,
475479
'breakOnAlias' => true,
476480
]
477481
);
@@ -496,7 +500,7 @@ public function parse(Parser $parser, TokensList $list)
496500
++$nextidx;
497501
}
498502

499-
if ($this->options->has('DATABASE')) {
503+
if ($isDatabase) {
500504
$this->entityOptions = OptionsArray::parse(
501505
$parser,
502506
$list,

src/Statements/SetStatement.php

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,14 @@ class SetStatement extends Statement
5555
3,
5656
'expr',
5757
],
58+
'SESSION' => 3,
59+
'GLOBAL' => 3,
60+
'PERSIST' => 3,
61+
'PERSIST_ONLY' => 3,
62+
'@@SESSION' => 3,
63+
'@@GLOBAL' => 3,
64+
'@@PERSIST' => 3,
65+
'@@PERSIST_ONLY' => 3,
5866
];
5967

6068
public static $END_OPTIONS = [

tests/Builder/CreateStatementTest.php

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ public function testBuilder()
2828

2929
public function testBuilderDatabase()
3030
{
31+
// CREATE DATABASE ...
3132
$parser = new Parser(
3233
'CREATE DATABASE `mydb` ' .
3334
'DEFAULT CHARACTER SET = utf8 DEFAULT COLLATE = utf8_general_ci'
@@ -39,6 +40,20 @@ public function testBuilderDatabase()
3940
'DEFAULT CHARACTER SET=utf8 DEFAULT COLLATE=utf8_general_ci',
4041
$stmt->build()
4142
);
43+
44+
45+
// CREATE SCHEMA ...
46+
$parser = new Parser(
47+
'CREATE SCHEMA `mydb` ' .
48+
'DEFAULT CHARACTER SET = utf8 DEFAULT COLLATE = utf8_general_ci'
49+
);
50+
$stmt = $parser->statements[0];
51+
52+
$this->assertEquals(
53+
'CREATE SCHEMA `mydb` ' .
54+
'DEFAULT CHARACTER SET=utf8 DEFAULT COLLATE=utf8_general_ci',
55+
$stmt->build()
56+
);
4257
}
4358

4459
public function testBuilderDefaultInt()

tests/Builder/SelectStatementTest.php

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ public function testBuilderIntoOptions()
9292
);
9393
}
9494

95-
public function testBuildGroupBy()
95+
public function testBuilderGroupBy()
9696
{
9797
$query = 'SELECT COUNT(CustomerID), Country FROM Customers GROUP BY Country';
9898
$parser = new Parser($query);
@@ -104,7 +104,7 @@ public function testBuildGroupBy()
104104
);
105105
}
106106

107-
public function testBuildIndexHint()
107+
public function testBuilderIndexHint()
108108
{
109109
$query = 'SELECT * FROM address FORCE INDEX (idx_fk_city_id) IGNORE KEY FOR GROUP BY (a, b,c) WHERE city_id<0';
110110
$parser = new Parser($query);
@@ -115,4 +115,16 @@ public function testBuildIndexHint()
115115
$stmt->build()
116116
);
117117
}
118+
119+
public function testBuilderSurroundedByParanthesisWithLimit()
120+
{
121+
$query = '(SELECT first_name FROM `actor` LIMIT 1, 2)';
122+
$parser = new Parser($query);
123+
$stmt = $parser->statements[0];
124+
125+
$this->assertEquals(
126+
'SELECT first_name FROM `actor` LIMIT 1, 2',
127+
$stmt->build()
128+
);
129+
}
118130
}

tests/Builder/SetStatementTest.php

Lines changed: 110 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,5 +64,115 @@ public function testBuilderView()
6464
'SET NAMES \'utf8\' DEFAULT',
6565
$stmt->build()
6666
);
67+
68+
/* Assertion 6 */
69+
$query = 'SET sql_mode = \'TRADITIONAL\'';
70+
71+
$parser = new Parser($query);
72+
$stmt = $parser->statements[0];
73+
74+
$this->assertEquals(
75+
'SET sql_mode = \'TRADITIONAL\'',
76+
$stmt->build()
77+
);
78+
79+
/* Assertion 7 */
80+
$query = 'SET SESSION sql_mode = \'TRADITIONAL\'';
81+
82+
$parser = new Parser($query);
83+
$stmt = $parser->statements[0];
84+
85+
$this->assertEquals(
86+
'SET SESSION sql_mode = \'TRADITIONAL\'',
87+
$stmt->build()
88+
);
89+
90+
/* Assertion 8 */
91+
$query = 'SET GLOBAL sql_mode = \'TRADITIONAL\'';
92+
93+
$parser = new Parser($query);
94+
$stmt = $parser->statements[0];
95+
96+
$this->assertEquals(
97+
'SET GLOBAL sql_mode = \'TRADITIONAL\'',
98+
$stmt->build()
99+
);
100+
101+
/* Assertion 9 */
102+
$query = 'SET @@SESSION sql_mode = \'TRADITIONAL\'';
103+
104+
$parser = new Parser($query);
105+
$stmt = $parser->statements[0];
106+
107+
$this->assertEquals(
108+
'SET SESSION sql_mode = \'TRADITIONAL\'',
109+
$stmt->build()
110+
);
111+
112+
/* Assertion 10 */
113+
$query = 'SET @@GLOBAL sql_mode = \'TRADITIONAL\'';
114+
115+
$parser = new Parser($query);
116+
$stmt = $parser->statements[0];
117+
118+
$this->assertEquals(
119+
'SET GLOBAL sql_mode = \'TRADITIONAL\'',
120+
$stmt->build()
121+
);
122+
123+
/* Assertion 11 */
124+
$query = 'SET @@sql_mode = \'TRADITIONAL\'';
125+
126+
$parser = new Parser($query);
127+
$stmt = $parser->statements[0];
128+
129+
$this->assertEquals(
130+
'SET @@sql_mode = \'TRADITIONAL\'',
131+
$stmt->build()
132+
);
133+
134+
/* Assertion 12 */
135+
$query = 'SET PERSIST sql_mode = \'TRADITIONAL\'';
136+
137+
$parser = new Parser($query);
138+
$stmt = $parser->statements[0];
139+
140+
$this->assertEquals(
141+
'SET PERSIST sql_mode = \'TRADITIONAL\'',
142+
$stmt->build()
143+
);
144+
145+
/* Assertion 13 */
146+
$query = 'SET PERSIST_ONLY sql_mode = \'TRADITIONAL\'';
147+
148+
$parser = new Parser($query);
149+
$stmt = $parser->statements[0];
150+
151+
$this->assertEquals(
152+
'SET PERSIST_ONLY sql_mode = \'TRADITIONAL\'',
153+
$stmt->build()
154+
);
155+
156+
/* Assertion 14 */
157+
$query = 'SET @@PERSIST sql_mode = \'TRADITIONAL\'';
158+
159+
$parser = new Parser($query);
160+
$stmt = $parser->statements[0];
161+
162+
$this->assertEquals(
163+
'SET PERSIST sql_mode = \'TRADITIONAL\'',
164+
$stmt->build()
165+
);
166+
167+
/* Assertion 15 */
168+
$query = 'SET @@PERSIST_ONLY sql_mode = \'TRADITIONAL\'';
169+
170+
$parser = new Parser($query);
171+
$stmt = $parser->statements[0];
172+
173+
$this->assertEquals(
174+
'SET PERSIST_ONLY sql_mode = \'TRADITIONAL\'',
175+
$stmt->build()
176+
);
67177
}
68178
}

tests/Parser/CreateStatementTest.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,16 @@ public function testCreate($test)
2020
public function createProvider()
2121
{
2222
return [
23+
['parser/parseCreateDatabase'],
24+
['parser/parseCreateDatabaseErr'],
2325
['parser/parseCreateFunction'],
2426
['parser/parseCreateFunctionErr1'],
2527
['parser/parseCreateFunctionErr2'],
2628
['parser/parseCreateFunctionErr3'],
2729
['parser/parseCreateProcedure'],
2830
['parser/parseCreateProcedure2'],
31+
['parser/parseCreateSchema'],
32+
['parser/parseCreateSchemaErr'],
2933
['parser/parseCreateTable'],
3034
['parser/parseCreateTable2'],
3135
['parser/parseCreateTable3'],

tests/Parser/SelectStatementTest.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,7 @@ public function selectProvider()
8686
['parser/parseSelectIndexHintErr2'],
8787
['parser/parseSelectIndexHintErr3'],
8888
['parser/parseSelectIndexHintErr4'],
89+
['parser/parseSelectWithParenthesis'],
8990
];
9091
}
9192
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
CREATE DATABASE IF NOT EXISTS pma DEFAULT CHARSET 'utf8';
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
a:4:{s:5:"query";s:57:"CREATE DATABASE IF NOT EXISTS pma DEFAULT CHARSET 'utf8';";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:57:"CREATE DATABASE IF NOT EXISTS pma DEFAULT CHARSET 'utf8';";s:3:"len";i:57;s:4:"last";i:57;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:13:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"CREATE";s:5:"value";s:6:"CREATE";s:7:"keyword";s:6:"CREATE";s:4:"type";i:1;s:5:"flags";i:3;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:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"DATABASE";s:5:"value";s:8:"DATABASE";s:7:"keyword";s:8:"DATABASE";s:4:"type";i:1;s:5:"flags";i:35;s:8:"position";i:7;}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:15;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:13:"IF NOT EXISTS";s:5:"value";s:13:"IF NOT EXISTS";s:7:"keyword";s:13:"IF NOT EXISTS";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:16;}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:29;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"pma";s:5:"value";s:3:"pma";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:30;}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:33;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:15:"DEFAULT CHARSET";s:5:"value";s:15:"DEFAULT CHARSET";s:7:"keyword";s:15:"DEFAULT CHARSET";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:34;}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:49;}i:10;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:50;}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:9;s:5:"flags";i:0;s:8:"position";i:56;}i:12;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:13;s:3:"idx";i:13;}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:47:"PhpMyAdmin\SqlParser\Statements\CreateStatement":17:{s:4:"name";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";s:3:"pma";s:5:"table";N;s:6:"column";N;s:4:"expr";s:3:"pma";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:13:"entityOptions";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:1;a:4:{s:4:"name";s:15:"DEFAULT CHARSET";s:6:"equals";b:1;s:4:"expr";s:6:"'utf8'";s:5:"value";s:4:"utf8";}}}s:6:"fields";N;s:6:"select";N;s:4:"like";N;s:11:"partitionBy";N;s:13:"partitionsNum";N;s:14:"subpartitionBy";N;s:16:"subpartitionsNum";N;s:10:"partitions";N;s:5:"table";N;s:6:"return";N;s:10:"parameters";N;s:4:"body";a:0:{}s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:2:{i:6;s:8:"DATABASE";i:7;s:13:"IF NOT EXISTS";}}s:5:"first";i:0;s:4:"last";i:10;}}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:{}}}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
CREATE DATABASE IF NOT EXISTS pma ENGINE='InnoDB' DEFAULT CHARSET 'utf8'
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
a:4:{s:5:"query";s:72:"CREATE DATABASE IF NOT EXISTS pma ENGINE='InnoDB' DEFAULT CHARSET 'utf8'";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:72:"CREATE DATABASE IF NOT EXISTS pma ENGINE='InnoDB' DEFAULT CHARSET 'utf8'";s:3:"len";i:72;s:4:"last";i:72;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:16:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"CREATE";s:5:"value";s:6:"CREATE";s:7:"keyword";s:6:"CREATE";s:4:"type";i:1;s:5:"flags";i:3;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:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"DATABASE";s:5:"value";s:8:"DATABASE";s:7:"keyword";s:8:"DATABASE";s:4:"type";i:1;s:5:"flags";i:35;s:8:"position";i:7;}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:15;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:13:"IF NOT EXISTS";s:5:"value";s:13:"IF NOT EXISTS";s:7:"keyword";s:13:"IF NOT EXISTS";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:16;}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:29;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"pma";s:5:"value";s:3:"pma";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:30;}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:33;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"ENGINE";s:5:"value";s:6:"ENGINE";s:7:"keyword";s:6:"ENGINE";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:34;}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:2;s:5:"flags";i:2;s:8:"position";i:40;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"'InnoDB'";s:5:"value";s:6:"InnoDB";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:1;s:8:"position";i:41;}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:15:"DEFAULT CHARSET";s:5:"value";s:15:"DEFAULT CHARSET";s:7:"keyword";s:15:"DEFAULT CHARSET";s:4:"type";i:1;s:5:"flags";i:7;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:65;}i:14;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:66;}i:15;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:16;s:3:"idx";i:17;}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:47:"PhpMyAdmin\SqlParser\Statements\CreateStatement":17:{s:4:"name";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";s:3:"pma";s:5:"table";N;s:6:"column";N;s:4:"expr";s:3:"pma";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:13:"entityOptions";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:6:"fields";N;s:6:"select";N;s:4:"like";N;s:11:"partitionBy";N;s:13:"partitionsNum";N;s:14:"subpartitionBy";N;s:16:"subpartitionsNum";N;s:10:"partitions";N;s:5:"table";N;s:6:"return";N;s:10:"parameters";N;s:4:"body";a:0:{}s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:2:{i:6;s:8:"DATABASE";i:7;s:13:"IF NOT EXISTS";}}s:5:"first";i:0;s:4:"last";i:7;}}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:65;i:2;i:0;}}}}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
CREATE DATABASE IF NOT EXISTS pma DEFAULT CHARSET 'utf8';
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
a:4:{s:5:"query";s:57:"CREATE DATABASE IF NOT EXISTS pma DEFAULT CHARSET 'utf8';";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:57:"CREATE DATABASE IF NOT EXISTS pma DEFAULT CHARSET 'utf8';";s:3:"len";i:57;s:4:"last";i:57;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:13:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"CREATE";s:5:"value";s:6:"CREATE";s:7:"keyword";s:6:"CREATE";s:4:"type";i:1;s:5:"flags";i:3;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:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"DATABASE";s:5:"value";s:8:"DATABASE";s:7:"keyword";s:8:"DATABASE";s:4:"type";i:1;s:5:"flags";i:35;s:8:"position";i:7;}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:15;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:13:"IF NOT EXISTS";s:5:"value";s:13:"IF NOT EXISTS";s:7:"keyword";s:13:"IF NOT EXISTS";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:16;}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:29;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"pma";s:5:"value";s:3:"pma";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:30;}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:33;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:15:"DEFAULT CHARSET";s:5:"value";s:15:"DEFAULT CHARSET";s:7:"keyword";s:15:"DEFAULT CHARSET";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:34;}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:49;}i:10;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:50;}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:9;s:5:"flags";i:0;s:8:"position";i:56;}i:12;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:13;s:3:"idx";i:13;}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:47:"PhpMyAdmin\SqlParser\Statements\CreateStatement":17:{s:4:"name";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";s:3:"pma";s:5:"table";N;s:6:"column";N;s:4:"expr";s:3:"pma";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:13:"entityOptions";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:1;a:4:{s:4:"name";s:15:"DEFAULT CHARSET";s:6:"equals";b:1;s:4:"expr";s:6:"'utf8'";s:5:"value";s:4:"utf8";}}}s:6:"fields";N;s:6:"select";N;s:4:"like";N;s:11:"partitionBy";N;s:13:"partitionsNum";N;s:14:"subpartitionBy";N;s:16:"subpartitionsNum";N;s:10:"partitions";N;s:5:"table";N;s:6:"return";N;s:10:"parameters";N;s:4:"body";a:0:{}s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:2:{i:6;s:8:"DATABASE";i:7;s:13:"IF NOT EXISTS";}}s:5:"first";i:0;s:4:"last";i:10;}}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:{}}}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
CREATE SCHEMA IF NOT EXISTS pma ENGINE='InnoDB' DEFAULT CHARSET 'utf8'

0 commit comments

Comments
 (0)