summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDeven Bansod <devenbansod@users.noreply.github.com>2018-12-21 11:06:20 +0530
committerGitHub <noreply@github.com>2018-12-21 11:06:20 +0530
commit1b644028d693f7140868ba32e4847e5cd866fa4f (patch)
tree586c7559c732b2ab447e2f0889cadae520fbe109
parent688b7a6e93554d7d880ceb89d3586da5f2cfb0cf (diff)
parentd046cb2b4bf0a0c072644efe391c0cdbd3cfd7f4 (diff)
downloadsql-parser-1b644028d693f7140868ba32e4847e5cd866fa4f.zip
sql-parser-1b644028d693f7140868ba32e4847e5cd866fa4f.tar.gz
sql-parser-1b644028d693f7140868ba32e4847e5cd866fa4f.tar.bz2
Merge pull request #210 from devenbansod/fix/204
Fix building of RenameStatement
-rw-r--r--src/Components/RenameOperation.php2
-rw-r--r--src/Statements/CreateStatement.php2
-rw-r--r--src/Statements/RenameStatement.php8
-rw-r--r--tests/Builder/RenameStatementTest.php42
4 files changed, 52 insertions, 2 deletions
diff --git a/src/Components/RenameOperation.php b/src/Components/RenameOperation.php
index 2e3d6ef..e9bd9ce 100644
--- a/src/Components/RenameOperation.php
+++ b/src/Components/RenameOperation.php
@@ -68,7 +68,7 @@ class RenameOperation extends Component
*
* 1 ------------------------[ TO ]-----------------------> 2
*
- * 2 ---------------------[ old name ]--------------------> 3
+ * 2 ---------------------[ new name ]--------------------> 3
*
* 3 ------------------------[ , ]------------------------> 0
* 3 -----------------------[ else ]----------------------> (END)
diff --git a/src/Statements/CreateStatement.php b/src/Statements/CreateStatement.php
index 808109e..65cdbbb 100644
--- a/src/Statements/CreateStatement.php
+++ b/src/Statements/CreateStatement.php
@@ -411,7 +411,7 @@ class CreateStatement extends Statement
$this->select = new SelectStatement($parser, $list);
} elseif ($token->type === Token::TYPE_KEYWORD
&& $token->keyword === 'LIKE') {
- /* CREATE TABLE `new_tbl` LIKE 'orig_tbl' */
+ /* CREATE TABLE `new_tbl` LIKE 'orig_tbl' */
$list->idx = $nextidx;
$this->like = Expression::parse(
$parser,
diff --git a/src/Statements/RenameStatement.php b/src/Statements/RenameStatement.php
index 90533c2..e1bcf0d 100644
--- a/src/Statements/RenameStatement.php
+++ b/src/Statements/RenameStatement.php
@@ -47,4 +47,12 @@ class RenameStatement extends Statement
$list->getNextOfTypeAndValue(Token::TYPE_KEYWORD, 'TABLE');
}
}
+
+ /**
+ * @return string
+ */
+ public function build()
+ {
+ return 'RENAME TABLE ' . RenameOperation::build($this->renames);
+ }
}
diff --git a/tests/Builder/RenameStatementTest.php b/tests/Builder/RenameStatementTest.php
new file mode 100644
index 0000000..97852ab
--- /dev/null
+++ b/tests/Builder/RenameStatementTest.php
@@ -0,0 +1,42 @@
+<?php
+
+namespace PhpMyAdmin\SqlParser\Tests\Builder;
+
+use PhpMyAdmin\SqlParser\Parser;
+use PhpMyAdmin\SqlParser\Tests\TestCase;
+
+class RenameStatementTest extends TestCase
+{
+ public function testBuilder()
+ {
+ $query = 'RENAME TABLE old_table TO new_table';
+ $parser = new Parser(
+ $query
+ );
+ $stmt = $parser->statements[0];
+ $this->assertEquals(
+ $query,
+ $stmt->build()
+ );
+
+ $query = 'RENAME TABLE current_db.tbl_name TO other_db.tbl_name';
+ $parser = new Parser(
+ $query
+ );
+ $stmt = $parser->statements[0];
+ $this->assertEquals(
+ $query,
+ $stmt->build()
+ );
+
+ $query = 'RENAME TABLE old_table1 TO new_table1, old_table2 TO new_table2, old_table3 TO new_table3';
+ $parser = new Parser(
+ $query
+ );
+ $stmt = $parser->statements[0];
+ $this->assertEquals(
+ $query,
+ $stmt->build()
+ );
+ }
+}