-
-
Notifications
You must be signed in to change notification settings - Fork 119
Expand file tree
/
Copy pathCreateStatementTest.php
More file actions
111 lines (103 loc) · 3.93 KB
/
Copy pathCreateStatementTest.php
File metadata and controls
111 lines (103 loc) · 3.93 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
<?php
declare(strict_types=1);
namespace PhpMyAdmin\SqlParser\Tests\Parser;
use PhpMyAdmin\SqlParser\Parser;
use PhpMyAdmin\SqlParser\Tests\TestCase;
use PHPUnit\Framework\Attributes\DataProvider;
class CreateStatementTest extends TestCase
{
#[DataProvider('createProvider')]
public function testCreate(string $test): void
{
$this->runParserTest($test);
}
/** @return string[][] */
public static function createProvider(): array
{
return [
['parser/parseCreateDatabase'],
['parser/parseCreateDatabaseErr'],
['parser/parseCreateFunction'],
['parser/parseCreateFunctionErr1'],
['parser/parseCreateFunctionErr2'],
['parser/parseCreateFunctionErr3'],
['parser/parseCreateProcedure'],
['parser/parseCreateProcedure1'],
['parser/parseCreateProcedure2'],
['parser/parseCreateProcedure3'],
['parser/parseCreateProcedure4'],
['parser/parseCreateSchema'],
['parser/parseCreateSchemaErr'],
['parser/parseCreateTable'],
['parser/parseCreateTable2'],
['parser/parseCreateTable3'],
['parser/parseCreateTable4'],
['parser/parseCreateTable5'],
['parser/parseCreateTable6'],
['parser/parseCreateTable7'],
['parser/parseCreateTable8'],
['parser/parseCreateTable9'],
['parser/parseCreateTable10'],
['parser/parseCreateTable11'],
['parser/parseCreateTable12'],
['parser/parseCreateTable13'],
['parser/parseCreateTable14'],
['parser/parseCreateTable15'],
['parser/parseCreateTable16'],
['parser/parseCreateTable17'],
['parser/parseCreateTable18'],
['parser/parseCreateTableErr1'],
['parser/parseCreateTableErr2'],
['parser/parseCreateTableErr3'],
['parser/parseCreateTableErr4'],
['parser/parseCreateTableErr5'],
['parser/parseCreateTableSelect'],
['parser/parseCreateTableAsSelect'],
['parser/parseCreateTableLike'],
['parser/parseCreateTableSpatial'],
['parser/parseCreateTableSRID'],
['parser/parseCreateTableTimestampWithPrecision'],
['parser/parseCreateTableEnforcedCheck'],
['parser/parseCreateTableNotEnforcedCheck'],
['parser/parseCreateTableWithInvisibleKey'],
['parser/parseCreateTableWithParser'],
['parser/parseCreateTrigger'],
['parser/parseCreateUser1'],
['parser/parseCreateUser2'],
['parser/parseCreateView'],
['parser/parseCreateView2'],
['parser/parseCreateView3'],
['parser/parseCreateView4'],
['parser/parseCreateView5'],
['parser/parseCreateViewMultiple'],
['parser/parseCreateViewWithoutQuotes'],
['parser/parseCreateViewWithQuotes'],
['parser/parseCreateViewWithWrongSyntax'],
['parser/parseCreateViewWithUnion'],
['parser/parseCreateViewAsWithAs'],
['parser/parseCreateOrReplaceView1'],
];
}
public function testCreateViewsWithCteRemainSeparate(): void
{
$sql = <<<'SQL'
CREATE VIEW view1 AS
WITH foo AS (SELECT 1 AS id)
SELECT * FROM foo;
CREATE VIEW view2 AS
WITH bar AS (SELECT 2 AS id)
SELECT * FROM bar;
SQL;
$parser = new Parser($sql);
self::assertSame([], $this->getErrorsAsArray($parser));
self::assertCount(2, $parser->statements);
self::assertSame(
'CREATE VIEW view1 AS WITH foo AS (SELECT 1 AS `id`) SELECT * FROM foo ',
$parser->statements[0]->build(),
);
self::assertSame(
'CREATE VIEW view2 AS WITH bar AS (SELECT 2 AS `id`) SELECT * FROM bar ',
$parser->statements[1]->build(),
);
}
}