Passed
Push — master ( 4d09f0...b17b21 )
by William
03:35 queued 54s
created

AlterStatementTest::testBuilderEventWithDefiner()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 6
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 4
nc 1
nop 0
dl 0
loc 6
rs 10
c 0
b 0
f 0
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 testBuilderWithComments(): void
25
    {
26
        $query = 'ALTER /* comment */ TABLE `actor` ' .
27
            'ADD PRIMARY KEY (`actor_id`), -- comment at the end of the line' . "\n" .
28
            'ADD KEY `idx_actor_last_name` (`last_name`) -- and that is the last comment.';
29
30
        $expectedQuery = 'ALTER TABLE `actor` ' .
31
            'ADD PRIMARY KEY (`actor_id`), ' .
32
            'ADD KEY `idx_actor_last_name` (`last_name`)';
33
34
        $parser = new Parser($query);
35
        $stmt = $parser->statements[0];
36
37
        $this->assertEquals($expectedQuery, $stmt->build());
38
    }
39
40
    public function testBuilderWithCommentsOnOptions(): void
41
    {
42
        $query = 'ALTER EVENT `myEvent` /* comment */ ' .
43
            'ON SCHEDULE -- Comment at the end of the line' . "\n" .
44
            'AT "2023-01-01 01:23:45"';
45
46
        $expectedQuery = 'ALTER EVENT `myEvent` ' .
47
            'ON SCHEDULE AT "2023-01-01 01:23:45"';
48
49
        $parser = new Parser($query);
50
        $stmt = $parser->statements[0];
51
52
        $this->assertEquals($expectedQuery, $stmt->build());
53
    }
54
55
    public function testBuilderCompressed(): void
56
    {
57
        $query = 'ALTER TABLE `user` CHANGE `message` `message` TEXT COMPRESSED';
58
        $parser = new Parser($query);
59
        $stmt = $parser->statements[0];
60
        $this->assertEquals($query, $stmt->build());
61
    }
62
63
    public function testBuilderPartitions(): void
64
    {
65
        $parser = new Parser('ALTER TABLE t1 PARTITION BY HASH(id) PARTITIONS 8');
66
        $stmt = $parser->statements[0];
67
68
        $this->assertEquals('ALTER TABLE t1 PARTITION BY  HASH(id) PARTITIONS 8', $stmt->build());
69
70
        $parser = new Parser('ALTER TABLE t1 ADD PARTITION (PARTITION p3 VALUES LESS THAN (2002))');
71
        $stmt = $parser->statements[0];
72
73
        $this->assertEquals(
74
            "ALTER TABLE t1 ADD PARTITION (\n" .
75
            "PARTITION p3 VALUES LESS THAN (2002)\n" .
76
            ')',
77
            $stmt->build()
78
        );
79
80
        $parser = new Parser('ALTER TABLE p PARTITION BY LINEAR KEY ALGORITHM=2 (id) PARTITIONS 32;');
81
        $stmt = $parser->statements[0];
82
83
        $this->assertEquals(
84
            'ALTER TABLE p PARTITION BY  LINEAR KEY ALGORITHM=2 (id) PARTITIONS 32',
85
            $stmt->build()
86
        );
87
88
        $parser = new Parser('ALTER TABLE t1 DROP PARTITION p0, p1;');
89
        $stmt = $parser->statements[0];
90
91
        $this->assertEquals(
92
            'ALTER TABLE t1 DROP PARTITION  p0, p1',
93
            $stmt->build()
94
        );
95
    }
96
97
    public function testBuilderEventWithDefiner(): void
98
    {
99
        $query = 'ALTER DEFINER=user EVENT myEvent ENABLE';
100
        $parser = new Parser($query);
101
        $stmt = $parser->statements[0];
102
        $this->assertEquals($query, $stmt->build());
103
    }
104
}
105