/** * Computes the difference between two index objects. * * @param Index $fromIndex * @param Index $toIndex * @param boolean $caseInsensitive * @return boolean */ public static function computeDiff(Index $fromIndex, Index $toIndex, $caseInsensitive = false) { // Check for removed index columns in $toIndex $fromIndexColumns = $fromIndex->getColumns(); $max = count($fromIndexColumns); for ($i = 0; $i < $max; $i++) { $indexColumn = $fromIndexColumns[$i]; if (!$toIndex->hasColumnAtPosition($i, $indexColumn, $fromIndex->getColumnSize($indexColumn), $caseInsensitive)) { return true; } } // Check for new index columns in $toIndex $toIndexColumns = $toIndex->getColumns(); $max = count($toIndexColumns); for ($i = 0; $i < $max; $i++) { $indexColumn = $toIndexColumns[$i]; if (!$fromIndex->hasColumnAtPosition($i, $indexColumn, $toIndex->getColumnSize($indexColumn), $caseInsensitive)) { return true; } } // Check for difference in unicity return $fromIndex->isUnique() !== $toIndex->isUnique(); }
public function testHasColumnAtFirstPosition() { $index = new Index(); $index->addColumn($this->getColumnMock('foo', array('size' => 0))); $this->assertTrue($index->hasColumnAtPosition(0, 'foo')); }