Skip to content

Commit 1b64402

Browse files
authored
Merge pull request #210 from devenbansod/fix/204
Fix building of RenameStatement
2 parents 688b7a6 + d046cb2 commit 1b64402

File tree

4 files changed

+52
-2
lines changed

4 files changed

+52
-2
lines changed

src/Components/RenameOperation.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ public static function parse(Parser $parser, TokensList $list, array $options =
6868
*
6969
* 1 ------------------------[ TO ]-----------------------> 2
7070
*
71-
* 2 ---------------------[ old name ]--------------------> 3
71+
* 2 ---------------------[ new name ]--------------------> 3
7272
*
7373
* 3 ------------------------[ , ]------------------------> 0
7474
* 3 -----------------------[ else ]----------------------> (END)

src/Statements/CreateStatement.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -411,7 +411,7 @@ public function parse(Parser $parser, TokensList $list)
411411
$this->select = new SelectStatement($parser, $list);
412412
} elseif ($token->type === Token::TYPE_KEYWORD
413413
&& $token->keyword === 'LIKE') {
414-
/* CREATE TABLE `new_tbl` LIKE 'orig_tbl' */
414+
/* CREATE TABLE `new_tbl` LIKE 'orig_tbl' */
415415
$list->idx = $nextidx;
416416
$this->like = Expression::parse(
417417
$parser,

src/Statements/RenameStatement.php

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,4 +47,12 @@ public function before(Parser $parser, TokensList $list, Token $token)
4747
$list->getNextOfTypeAndValue(Token::TYPE_KEYWORD, 'TABLE');
4848
}
4949
}
50+
51+
/**
52+
* @return string
53+
*/
54+
public function build()
55+
{
56+
return 'RENAME TABLE ' . RenameOperation::build($this->renames);
57+
}
5058
}
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
<?php
2+
3+
namespace PhpMyAdmin\SqlParser\Tests\Builder;
4+
5+
use PhpMyAdmin\SqlParser\Parser;
6+
use PhpMyAdmin\SqlParser\Tests\TestCase;
7+
8+
class RenameStatementTest extends TestCase
9+
{
10+
public function testBuilder()
11+
{
12+
$query = 'RENAME TABLE old_table TO new_table';
13+
$parser = new Parser(
14+
$query
15+
);
16+
$stmt = $parser->statements[0];
17+
$this->assertEquals(
18+
$query,
19+
$stmt->build()
20+
);
21+
22+
$query = 'RENAME TABLE current_db.tbl_name TO other_db.tbl_name';
23+
$parser = new Parser(
24+
$query
25+
);
26+
$stmt = $parser->statements[0];
27+
$this->assertEquals(
28+
$query,
29+
$stmt->build()
30+
);
31+
32+
$query = 'RENAME TABLE old_table1 TO new_table1, old_table2 TO new_table2, old_table3 TO new_table3';
33+
$parser = new Parser(
34+
$query
35+
);
36+
$stmt = $parser->statements[0];
37+
$this->assertEquals(
38+
$query,
39+
$stmt->build()
40+
);
41+
}
42+
}

0 commit comments

Comments
 (0)