diff --git a/lib/Doctrine/DBAL/Schema/ColumnDiff.php b/lib/Doctrine/DBAL/Schema/ColumnDiff.php index c993c9b11893577fa6995b2514dfcdb2bb488e7e..61d7f7319502b22410e6b90f709c81d768a65116 100644 --- a/lib/Doctrine/DBAL/Schema/ColumnDiff.php +++ b/lib/Doctrine/DBAL/Schema/ColumnDiff.php @@ -77,6 +77,8 @@ class ColumnDiff */ public function getOldColumnName() { - return new Identifier($this->oldColumnName); + $quote = $this->fromColumn && $this->fromColumn->isQuoted(); + + return new Identifier($this->oldColumnName, $quote); } } diff --git a/lib/Doctrine/DBAL/Schema/Identifier.php b/lib/Doctrine/DBAL/Schema/Identifier.php index 1e48614660e1a36e805c475923d3fdbff2d9cea8..babe583e43add89cf3586c254419916b0decf05e 100644 --- a/lib/Doctrine/DBAL/Schema/Identifier.php +++ b/lib/Doctrine/DBAL/Schema/Identifier.php @@ -35,9 +35,14 @@ class Identifier extends AbstractAsset * Constructor. * * @param string $identifier Identifier name to wrap. + * @param bool $quote Whether to force quoting the given identifier. */ - public function __construct($identifier) + public function __construct($identifier, $quote = false) { $this->_setName($identifier); + + if ($quote && ! $this->_quoted) { + $this->_setName('"' . $this->getName() . '"'); + } } } diff --git a/tests/Doctrine/Tests/DBAL/Schema/ColumnDiffTest.php b/tests/Doctrine/Tests/DBAL/Schema/ColumnDiffTest.php new file mode 100644 index 0000000000000000000000000000000000000000..f2d8d2143af682f68bb45257583f719206b808b9 --- /dev/null +++ b/tests/Doctrine/Tests/DBAL/Schema/ColumnDiffTest.php @@ -0,0 +1,28 @@ +<?php + +namespace Doctrine\Tests\DBAL\Schema; + +use Doctrine\DBAL\Schema\Column; +use Doctrine\DBAL\Schema\ColumnDiff; +use Doctrine\DBAL\Types\Type; + +class ColumnDiffTest extends \PHPUnit_Framework_TestCase +{ + /** + * @group DBAL-1255 + */ + public function testPreservesOldColumnNameQuotation() + { + $fromColumn = new Column('"foo"', Type::getType(Type::INTEGER)); + $toColumn = new Column('bar', Type::getType(Type::INTEGER)); + + $columnDiff = new ColumnDiff('"foo"', $toColumn, array()); + $this->assertTrue($columnDiff->getOldColumnName()->isQuoted()); + + $columnDiff = new ColumnDiff('"foo"', $toColumn, array(), $fromColumn); + $this->assertTrue($columnDiff->getOldColumnName()->isQuoted()); + + $columnDiff = new ColumnDiff('foo', $toColumn, array(), $fromColumn); + $this->assertTrue($columnDiff->getOldColumnName()->isQuoted()); + } +}