getConnection(false)->schema->getTableSchema('order', true); $this->assertFalse($table->columns['id']->autoIncrement); } public function constraintsProvider() { $result = parent::constraintsProvider(); $result['1: check'][2][0]->expression = '"C_check" <> \'\''; $result['1: check'][2][] = new CheckConstraint([ 'name' => AnyValue::getInstance(), 'columnNames' => ['C_id'], 'expression' => '"C_id" IS NOT NULL', ]); $result['1: check'][2][] = new CheckConstraint([ 'name' => AnyValue::getInstance(), 'columnNames' => ['C_not_null'], 'expression' => '"C_not_null" IS NOT NULL', ]); $result['1: check'][2][] = new CheckConstraint([ 'name' => AnyValue::getInstance(), 'columnNames' => ['C_unique'], 'expression' => '"C_unique" IS NOT NULL', ]); $result['1: check'][2][] = new CheckConstraint([ 'name' => AnyValue::getInstance(), 'columnNames' => ['C_default'], 'expression' => '"C_default" IS NOT NULL', ]); $result['2: check'][2][] = new CheckConstraint([ 'name' => AnyValue::getInstance(), 'columnNames' => ['C_id_1'], 'expression' => '"C_id_1" IS NOT NULL', ]); $result['2: check'][2][] = new CheckConstraint([ 'name' => AnyValue::getInstance(), 'columnNames' => ['C_id_2'], 'expression' => '"C_id_2" IS NOT NULL', ]); $result['3: foreign key'][2][0]->foreignSchemaName = AnyValue::getInstance(); $result['3: foreign key'][2][0]->onUpdate = null; $result['3: index'][2] = []; $result['3: check'][2][] = new CheckConstraint([ 'name' => AnyValue::getInstance(), 'columnNames' => ['C_fk_id_1'], 'expression' => '"C_fk_id_1" IS NOT NULL', ]); $result['3: check'][2][] = new CheckConstraint([ 'name' => AnyValue::getInstance(), 'columnNames' => ['C_fk_id_2'], 'expression' => '"C_fk_id_2" IS NOT NULL', ]); $result['3: check'][2][] = new CheckConstraint([ 'name' => AnyValue::getInstance(), 'columnNames' => ['C_id'], 'expression' => '"C_id" IS NOT NULL', ]); $result['4: check'][2][] = new CheckConstraint([ 'name' => AnyValue::getInstance(), 'columnNames' => ['C_id'], 'expression' => '"C_id" IS NOT NULL', ]); $result['4: check'][2][] = new CheckConstraint([ 'name' => AnyValue::getInstance(), 'columnNames' => ['C_col_2'], 'expression' => '"C_col_2" IS NOT NULL', ]); return $result; } public function testFindUniqueIndexes() { if ($this->driverName === 'sqlsrv') { $this->markTestSkipped('`\yii\db\mssql\Schema::findUniqueIndexes()` returns only unique constraints not unique indexes.'); } $db = $this->getConnection(); try { $db->createCommand()->dropTable('uniqueIndex')->execute(); } catch (\Exception $e) { } $db->createCommand()->createTable('uniqueIndex', [ 'somecol' => 'string', 'someCol2' => 'string', 'someCol3' => 'string', ])->execute(); /* @var $schema Schema */ $schema = $db->schema; $uniqueIndexes = $schema->findUniqueIndexes($schema->getTableSchema('uniqueIndex', true)); $this->assertEquals([], $uniqueIndexes); $db->createCommand()->createIndex('somecolUnique', 'uniqueIndex', 'somecol', true)->execute(); $uniqueIndexes = $schema->findUniqueIndexes($schema->getTableSchema('uniqueIndex', true)); $this->assertEquals([ 'somecolUnique' => ['somecol'], ], $uniqueIndexes); // create another column with upper case letter that fails postgres // see https://github.com/yiisoft/yii2/issues/10613 $db->createCommand()->createIndex('someCol2Unique', 'uniqueIndex', 'someCol2', true)->execute(); $uniqueIndexes = $schema->findUniqueIndexes($schema->getTableSchema('uniqueIndex', true)); $this->assertEquals([ 'somecolUnique' => ['somecol'], 'someCol2Unique' => ['someCol2'], ], $uniqueIndexes); // see https://github.com/yiisoft/yii2/issues/13814 $db->createCommand()->createIndex('another unique index', 'uniqueIndex', 'someCol3', true)->execute(); $uniqueIndexes = $schema->findUniqueIndexes($schema->getTableSchema('uniqueIndex', true)); $this->assertEquals([ 'somecolUnique' => ['somecol'], 'someCol2Unique' => ['someCol2'], 'another unique index' => ['someCol3'], ], $uniqueIndexes); } public function testCompositeFk() { $this->markTestSkipped('Should be fixed.'); } }