/**
  * {@inheritdoc}
  */
 public function addUniqueIndex(array $columnNames, $indexName = null, array $options = [])
 {
     if (!$indexName) {
         $indexName = $this->nameGenerator->generateIndexName($this->getName(), $columnNames, true);
     }
     return parent::addUniqueIndex($columnNames, $indexName, $options);
 }
 /**
  * Create an unique index without check of table and columns existence.
  * This method can be helpful when you need to create an index for renamed table or column
  *
  * @param Schema      $schema
  * @param QueryBag    $queries
  * @param string      $tableName
  * @param string[]    $columnNames
  * @param string|null $indexName
  */
 public function addUniqueIndex(Schema $schema, QueryBag $queries, $tableName, array $columnNames, $indexName = null)
 {
     if (!$indexName) {
         $indexName = $this->nameGenerator->generateIndexName($tableName, $columnNames, true);
     }
     $index = new Index($indexName, $columnNames, true);
     $diff = new TableDiff($tableName);
     $diff->addedIndexes = [$indexName => $index];
     $renameQuery = new SqlMigrationQuery($this->platform->getAlterTableSQL($diff));
     $queries->addQuery($renameQuery);
 }
 public function testEncodedUniqueIndexNameIsTheSameAsDoctrineDefault()
 {
     $tableName = 'tbl123456789012345';
     $columnName = 'clmn1234567890';
     $table = new Table($tableName, [new Column($columnName, Type::getType('string'))]);
     $table->addUniqueIndex([$columnName]);
     $indices = $table->getIndexes();
     $doctrineResult = array_pop($indices)->getName();
     $generator = new DbIdentifierNameGenerator();
     $result = $generator->generateIndexName($tableName, [$columnName], true);
     $this->assertEquals($doctrineResult, $result);
 }