Skip to content

Commit

Permalink
Ensure PostgreSQL field length change is executed again
Browse files Browse the repository at this point in the history
With #6280 quite some changes has been applied,
which removed the code path to create alter sql
statement if length of a field has changed.

This change adds a general test for this case
and reimplement the accidently removed code
from the `PostgreSQLPlatform`.
  • Loading branch information
sbuerk committed Aug 13, 2024
1 parent 267bbff commit 0a50d68
Show file tree
Hide file tree
Showing 2 changed files with 40 additions and 0 deletions.
1 change: 1 addition & 0 deletions src/Platforms/PostgreSQLPlatform.php
Original file line number Diff line number Diff line change
Expand Up @@ -252,6 +252,7 @@ public function getAlterTableSQL(TableDiff $diff): array
|| $columnDiff->hasPrecisionChanged()
|| $columnDiff->hasScaleChanged()
|| $columnDiff->hasFixedChanged()
|| $columnDiff->hasLengthChanged()
) {
$type = $newColumn->getType();

Expand Down
39 changes: 39 additions & 0 deletions tests/Functional/Platform/AlterColumnLengthChangeTest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
<?php

declare(strict_types=1);

namespace Doctrine\DBAL\Tests\Functional\Platform;

use Doctrine\DBAL\Schema\Table;
use Doctrine\DBAL\Tests\FunctionalTestCase;
use Doctrine\DBAL\Types\Types;

class AlterColumnLengthChangeTest extends FunctionalTestCase
{
public function testColumnLengthIsChanged(): void
{
$table = new Table('test_alter_length');
$table->addColumn('c1', Types::STRING)->setLength(50);

$this->dropAndCreateTable($table);

$sm = $this->connection->createSchemaManager();
$table = $sm->introspectTable('test_alter_length');
$columns = $table->getColumns();
self::assertCount(1, $columns);
self::assertSame(50, $columns[0]->getLength());

$table->getColumn('c1')->setLength(100);

$diff = $sm->createComparator()
->compareTables($sm->introspectTable('test_alter_length'), $table);

$sm->alterTable($diff);

$table = $sm->introspectTable('test_alter_length');
$columns = $table->getColumns();

self::assertCount(1, $columns);
self::assertSame(100, $columns[0]->getLength());
}
}

0 comments on commit 0a50d68

Please sign in to comment.