private function BuildDataType(array $ColumnInfoRow)
{
$DataTypeName = $ColumnInfoRow['DATA_TYPE'];
$DataTypeDefintion = $ColumnInfoRow['COLUMN_TYPE'];
$DataTypeDefintion = trim(str_replace($DataTypeName, '', $DataTypeDefintion));
$DataTypeExtra = null;
$DataTypeParameters = [];
if (strlen($DataTypeDefintion) > 0) {
if (strpos($DataTypeDefintion, '(') !== false && strpos($DataTypeDefintion, ')') !== false) {
$DataTypeExtra = trim(substr($DataTypeDefintion, strrpos($DataTypeDefintion, ')') + 1));
if (strlen($DataTypeExtra) > 0) {
$DataTypeDefintion = substr($DataTypeDefintion, 0, -strlen($DataTypeExtra));
} else {
$DataTypeExtra = null;
}
$DataTypeDefintion = trim($DataTypeDefintion, '()');
$DataTypeParameters = explode(',', $DataTypeDefintion);
array_walk($DataTypeParameters, function (&$Parameter, $Key) {
$UnquotedParameter = trim($Parameter, '\'"');
if ($UnquotedParameter !== $Parameter) {
$Parameter = $UnquotedParameter;
} else {
if (is_numeric($Parameter)) {
$Parameter = $Parameter + 0;
}
}
});
}
}
return new \Storm\Drivers\Base\Relational\Columns\DataType($DataTypeName, $DataTypeParameters, $DataTypeExtra);
}