private function BuildColumn(IConnection $Connection, array $ColumnInfoRow)
{
$Name = $ColumnInfoRow['COLUMN_NAME'];
$DataType = $this->BuildDataType($ColumnInfoRow);
$Traits = [];
if ($ColumnInfoRow['IS_NULLABLE'] === 'YES') {
$Traits[] = new Columns\Traits\DefaultValue($ColumnInfoRow['COLUMN_DEFAULT']);
} else {
$Traits[] = new Columns\Traits\NotNullable();
}
if ($ColumnInfoRow['CHARACTER_SET_NAME'] !== null) {
$Traits[] = new Mysql\Columns\CharacterSet($ColumnInfoRow['CHARACTER_SET_NAME']);
}
if ($ColumnInfoRow['COLLATION_NAME'] !== null) {
$Traits[] = new Mysql\Columns\Collation($ColumnInfoRow['COLLATION_NAME']);
}
if (strpos($ColumnInfoRow['EXTRA'], 'auto_increment') !== false) {
$Traits[] = new Columns\Traits\Increment();
}
if (strlen($ColumnInfoRow['COLUMN_COMMENT']) > 0) {
$Traits[] = new Columns\Traits\Comment($ColumnInfoRow['COLUMN_COMMENT']);
}
$IsPrimaryKey = $ColumnInfoRow['COLUMN_KEY'] === 'PRI';
return new Columns\Column($Name, $DataType, $IsPrimaryKey, $Traits);
}