1
|
|
|
<?php |
2
|
|
|
|
3
|
|
|
declare(strict_types=1); |
4
|
|
|
|
5
|
|
|
namespace PhpMyAdmin\SqlParser\Tests\Builder; |
6
|
|
|
|
7
|
|
|
use PhpMyAdmin\SqlParser\Parser; |
8
|
|
|
use PhpMyAdmin\SqlParser\Tests\TestCase; |
9
|
|
|
|
10
|
|
|
class AlterStatementTest extends TestCase |
11
|
|
|
{ |
12
|
|
|
public function testBuilder(): void |
13
|
|
|
{ |
14
|
|
|
$query = 'ALTER TABLE `actor` ' . |
15
|
|
|
'ADD PRIMARY KEY (`actor_id`), ' . |
16
|
|
|
'ADD KEY `idx_actor_last_name` (`last_name`)'; |
17
|
|
|
|
18
|
|
|
$parser = new Parser($query); |
19
|
|
|
$stmt = $parser->statements[0]; |
20
|
|
|
|
21
|
|
|
$this->assertEquals($query, $stmt->build()); |
22
|
|
|
} |
23
|
|
|
|
24
|
|
|
public function testBuilderCompressed(): void |
25
|
|
|
{ |
26
|
|
|
$query = 'ALTER TABLE `user` CHANGE `message` `message` TEXT COMPRESSED'; |
27
|
|
|
$parser = new Parser($query); |
28
|
|
|
$stmt = $parser->statements[0]; |
29
|
|
|
$this->assertEquals($query, $stmt->build()); |
30
|
|
|
} |
31
|
|
|
|
32
|
|
|
public function testBuilderPartitions(): void |
33
|
|
|
{ |
34
|
|
|
$parser = new Parser('ALTER TABLE t1 PARTITION BY HASH(id) PARTITIONS 8'); |
35
|
|
|
$stmt = $parser->statements[0]; |
36
|
|
|
|
37
|
|
|
$this->assertEquals('ALTER TABLE t1 PARTITION BY HASH(id) PARTITIONS 8 ', $stmt->build()); |
38
|
|
|
|
39
|
|
|
$parser = new Parser('ALTER TABLE t1 ADD PARTITION (PARTITION p3 VALUES LESS THAN (2002))'); |
40
|
|
|
$stmt = $parser->statements[0]; |
41
|
|
|
|
42
|
|
|
$this->assertEquals( |
43
|
|
|
"ALTER TABLE t1 ADD PARTITION (\n" . |
44
|
|
|
"PARTITION p3 VALUES LESS THAN (2002)\n" . |
45
|
|
|
')', |
46
|
|
|
$stmt->build() |
47
|
|
|
); |
48
|
|
|
|
49
|
|
|
$parser = new Parser('ALTER TABLE p PARTITION BY LINEAR KEY ALGORITHM=2 (id) PARTITIONS 32;'); |
50
|
|
|
$stmt = $parser->statements[0]; |
51
|
|
|
|
52
|
|
|
$this->assertEquals( |
53
|
|
|
'ALTER TABLE p PARTITION BY LINEAR KEY ALGORITHM=2 (id) PARTITIONS 32 ', |
54
|
|
|
$stmt->build() |
55
|
|
|
); |
56
|
|
|
|
57
|
|
|
$parser = new Parser('ALTER TABLE t1 DROP PARTITION p0, p1;'); |
58
|
|
|
$stmt = $parser->statements[0]; |
59
|
|
|
|
60
|
|
|
$this->assertEquals( |
61
|
|
|
'ALTER TABLE t1 DROP PARTITION p0, p1 ', |
62
|
|
|
$stmt->build() |
63
|
|
|
); |
64
|
|
|
} |
65
|
|
|
} |
66
|
|
|
|