1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
|
<?php
declare(strict_types=1);
namespace Doctrine\DBAL\Tests\Functional\Schema\PostgreSQL;
use Doctrine\DBAL\Platforms\PostgreSQLPlatform;
use Doctrine\DBAL\Schema\Column;
use Doctrine\DBAL\Schema\Schema;
use Doctrine\DBAL\Schema\Sequence;
use Doctrine\DBAL\Schema\Table;
use Doctrine\DBAL\Tests\FunctionalTestCase;
use Doctrine\DBAL\Types\Types;
final class SchemaTest extends FunctionalTestCase
{
public function testCreateTableWithSequenceInColumnDefinition(): void
{
$platform = $this->connection->getDatabasePlatform();
if (! $platform instanceof PostgreSQLPlatform) {
self::markTestSkipped('Test is for PostgreSQL.');
}
$this->dropTableIfExists('my_table');
$table = Table::editor()
->setUnquotedName('my_table')
->setColumns(
Column::editor()
->setUnquotedName('id')
->setTypeName(Types::INTEGER)
->setDefaultValue("nextval('my_table_id_seq'::regclass)")
->create(),
)
->create();
$sequence = new Sequence('my_table_id_seq');
$schema = new Schema([$table], [$sequence]);
foreach ($schema->toSql($platform) as $sql) {
$this->connection->executeStatement($sql);
}
$result = $this->connection->fetchAssociative(
'SELECT column_default FROM information_schema.columns WHERE table_name = ?',
['my_table'],
);
self::assertNotFalse($result);
self::assertEquals('nextval(\'my_table_id_seq\'::regclass)', $result['column_default']);
}
}
|