protected override object[] GetResultRow(object[] row, IDataReader rs, ISessionImplementor session)
{
object[] result;
if (translator.HasProjection)
{
result = new object[ResultTypes.Length];
for (int i = 0, position = 0; i < result.Length; i++)
{
int numColumns = ResultTypes[i].GetColumnSpan(session.Factory);
if (numColumns > 1)
{
string[] typeColumnAliases = ArrayHelper.Slice(cachedProjectedColumnAliases, position, numColumns);
result[i] = ResultTypes[i].NullSafeGet(rs, typeColumnAliases, session, null);
}
else
{
result[i] = ResultTypes[i].NullSafeGet(rs, cachedProjectedColumnAliases[position], session, null);
}
position += numColumns;
}
}
else
{
result = ToResultRow(row);
}
return result;
}