feat(etl): add collision detection to ColumnRenameTransformer

This commit is contained in:
Joseph Doherty
2026-01-03 10:50:03 -05:00
parent ae84cb3d75
commit 0820a9b024
2 changed files with 53 additions and 1 deletions
@@ -30,10 +30,23 @@ public class ColumnRenameTransformer : DataTransformerBase
{
_outputNames = new string[source.FieldCount];
_nameToOrdinal = new Dictionary<string, int>(StringComparer.OrdinalIgnoreCase);
for (int i = 0; i < source.FieldCount; i++)
{
var originalName = source.GetName(i);
var outputName = _renames.TryGetValue(originalName, out var newName) ? newName : originalName;
var outputName = _renames.TryGetValue(originalName, out var newName)
? newName
: originalName;
if (_nameToOrdinal.TryGetValue(outputName, out var existingOrdinal))
{
var existingOriginal = source.GetName(existingOrdinal);
throw new InvalidOperationException(
$"Column name collision: '{originalName}' → '{outputName}' conflicts with " +
$"'{existingOriginal}' (already at ordinal {existingOrdinal}). " +
$"Each output column name must be unique.");
}
_outputNames[i] = outputName;
_nameToOrdinal[outputName] = i;
}