Commit 4ce45f76 authored by Benjamin Eberlei's avatar Benjamin Eberlei

Merge branch 'DBAL-614' into 2.4

parents f27a56a2 ef859c75
...@@ -421,7 +421,7 @@ class PostgreSqlPlatform extends AbstractPlatform ...@@ -421,7 +421,7 @@ class PostgreSqlPlatform extends AbstractPlatform
$oldColumnName = $columnDiff->oldColumnName; $oldColumnName = $columnDiff->oldColumnName;
$column = $columnDiff->column; $column = $columnDiff->column;
if ($columnDiff->hasChanged('type')) { if ($columnDiff->hasChanged('type') || $columnDiff->hasChanged('precision') || $columnDiff->hasChanged('scale')) {
$type = $column->getType(); $type = $column->getType();
// here was a server version check before, but DBAL API does not support this anymore. // here was a server version check before, but DBAL API does not support this anymore.
......
...@@ -4,6 +4,8 @@ namespace Doctrine\Tests\DBAL\Platforms; ...@@ -4,6 +4,8 @@ namespace Doctrine\Tests\DBAL\Platforms;
use Doctrine\DBAL\Platforms\PostgreSqlPlatform; use Doctrine\DBAL\Platforms\PostgreSqlPlatform;
use Doctrine\DBAL\Types\Type; use Doctrine\DBAL\Types\Type;
use Doctrine\DBAL\Schema\Table;
use Doctrine\DBAL\Schema\TableDiff;
class PostgreSqlPlatformTest extends AbstractPlatformTestCase class PostgreSqlPlatformTest extends AbstractPlatformTestCase
{ {
...@@ -314,5 +316,52 @@ class PostgreSqlPlatformTest extends AbstractPlatformTestCase ...@@ -314,5 +316,52 @@ class PostgreSqlPlatformTest extends AbstractPlatformTestCase
$this->assertEquals('1', $platform->convertBooleans(true)); $this->assertEquals('1', $platform->convertBooleans(true));
$this->assertEquals('0', $platform->convertBooleans(false)); $this->assertEquals('0', $platform->convertBooleans(false));
} }
public function testAlterDecimalPrecisionScale()
{
$table = new Table('mytable');
$table->addColumn('dfoo1', 'decimal');
$table->addColumn('dfoo2', 'decimal', array('precision' => 10, 'scale' => 6));
$table->addColumn('dfoo3', 'decimal', array('precision' => 10, 'scale' => 6));
$table->addColumn('dfoo4', 'decimal', array('precision' => 10, 'scale' => 6));
$tableDiff = new TableDiff('mytable');
$tableDiff->fromTable = $table;
$tableDiff->changedColumns['dloo1'] = new \Doctrine\DBAL\Schema\ColumnDiff(
'dloo1', new \Doctrine\DBAL\Schema\Column(
'dloo1', \Doctrine\DBAL\Types\Type::getType('decimal'), array('precision' => 16, 'scale' => 6)
),
array('precision')
);
$tableDiff->changedColumns['dloo2'] = new \Doctrine\DBAL\Schema\ColumnDiff(
'dloo2', new \Doctrine\DBAL\Schema\Column(
'dloo2', \Doctrine\DBAL\Types\Type::getType('decimal'), array('precision' => 10, 'scale' => 4)
),
array('scale')
);
$tableDiff->changedColumns['dloo3'] = new \Doctrine\DBAL\Schema\ColumnDiff(
'dloo3', new \Doctrine\DBAL\Schema\Column(
'dloo3', \Doctrine\DBAL\Types\Type::getType('decimal'), array('precision' => 10, 'scale' => 6)
),
array()
);
$tableDiff->changedColumns['dloo4'] = new \Doctrine\DBAL\Schema\ColumnDiff(
'dloo4', new \Doctrine\DBAL\Schema\Column(
'dloo4', \Doctrine\DBAL\Types\Type::getType('decimal'), array('precision' => 16, 'scale' => 8)
),
array('precision', 'scale')
);
$sql = $this->_platform->getAlterTableSQL($tableDiff);
$expectedSql = array(
'ALTER TABLE mytable ALTER dloo1 TYPE NUMERIC(16, 6)',
'ALTER TABLE mytable ALTER dloo2 TYPE NUMERIC(10, 4)',
'ALTER TABLE mytable ALTER dloo4 TYPE NUMERIC(16, 8)',
);
$this->assertEquals($expectedSql, $sql);
}
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment