<?php namespace Doctrine\DBAL\Tests\Platforms; use Doctrine\DBAL\Platforms\AbstractPlatform; use Doctrine\DBAL\Platforms\PostgreSQL94Platform; use Doctrine\DBAL\Schema\Table; use Doctrine\DBAL\Types\Type; class PostgreSQL94PlatformTest extends AbstractPostgreSQLPlatformTestCase { public function createPlatform(): AbstractPlatform { return new PostgreSQL94Platform(); } public function testSupportsPartialIndexes(): void { self::assertTrue($this->platform->supportsPartialIndexes()); } public function testGetCreateTableSQLWithColumnCollation(): void { $table = new Table('foo'); $table->addColumn('id', 'string'); $table->addOption('comment', 'foo'); self::assertSame( [ 'CREATE TABLE foo (id VARCHAR(255) NOT NULL)', "COMMENT ON TABLE foo IS 'foo'", ], $this->platform->getCreateTableSQL($table), 'Comments are added to table.' ); } public function testColumnCollationDeclarationSQL(): void { self::assertEquals( 'COLLATE "en_US.UTF-8"', $this->platform->getColumnCollationDeclarationSQL('en_US.UTF-8') ); } /** * @group DBAL-553 */ public function testHasNativeJsonType(): void { self::assertTrue($this->platform->hasNativeJsonType()); } /** * @group DBAL-553 */ public function testReturnsJsonTypeDeclarationSQL(): void { self::assertSame('JSON', $this->platform->getJsonTypeDeclarationSQL([])); self::assertSame('JSON', $this->platform->getJsonTypeDeclarationSQL(['jsonb' => false])); self::assertSame('JSONB', $this->platform->getJsonTypeDeclarationSQL(['jsonb' => true])); } public function testReturnsSmallIntTypeDeclarationSQL(): void { self::assertSame( 'SMALLSERIAL', $this->platform->getSmallIntTypeDeclarationSQL(['autoincrement' => true]) ); self::assertSame( 'SMALLINT', $this->platform->getSmallIntTypeDeclarationSQL(['autoincrement' => false]) ); self::assertSame( 'SMALLINT', $this->platform->getSmallIntTypeDeclarationSQL([]) ); } /** * @group DBAL-553 */ public function testInitializesJsonTypeMapping(): void { self::assertTrue($this->platform->hasDoctrineTypeMappingFor('json')); self::assertEquals(Type::JSON, $this->platform->getDoctrineTypeMapping('json')); self::assertTrue($this->platform->hasDoctrineTypeMappingFor('jsonb')); self::assertEquals(Type::JSON, $this->platform->getDoctrineTypeMapping('jsonb')); } /** * @group DBAL-1220 */ public function testReturnsCloseActiveDatabaseConnectionsSQL(): void { self::assertSame( "SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE datname = 'foo'", $this->platform->getCloseActiveDatabaseConnectionsSQL('foo') ); } }