Skip to content

Commit

Permalink
Fix for duplicate column names
Browse files Browse the repository at this point in the history
  • Loading branch information
johnwelch committed Jun 30, 2014
1 parent cb497df commit 877bf17
Showing 1 changed file with 37 additions and 7 deletions.
44 changes: 37 additions & 7 deletions SsisUnit.TestComponents/SsisUnitDestination.cs
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@ public override void PreExecute()
{
if (DataTable == null)
{
DataTable = new DataTable("SsisUnit");
DataTable = new DataTable("SsisUnit");
}

if (_bufferColumnMapping == null)
Expand All @@ -102,13 +102,29 @@ public override void PreExecute()
_bufferColumnMapping.Clear();
}

var names = new Dictionary<string, int>();
foreach (IDTSInputColumn column in ComponentMetaData.InputCollection[0].InputColumnCollection)
{
int value;
if (names.TryGetValue(column.Name, out value))
{
names[column.Name] = value + 1;
}
else
{
names[column.Name] = 1;
}
}

foreach (IDTSInputColumn column in ComponentMetaData.InputCollection[0].InputColumnCollection)
{
bool isLong = false;
_bufferColumnMapping.Add(column.Name, BufferManager.FindColumnByLineageID(ComponentMetaData.InputCollection[0].Buffer, column.LineageID));
var dataColumn = new DataColumn(column.Name);
dataColumn.DataType = BufferTypeToDataRecordType(ConvertBufferDataTypeToFitManaged(column.DataType, ref isLong));
dataColumn.MaxLength = column.Length == 0 ? -1 : column.Length;
_bufferColumnMapping.Add(GetColumName(names, column), BufferManager.FindColumnByLineageID(ComponentMetaData.InputCollection[0].Buffer, column.LineageID));
var dataColumn = new DataColumn(GetColumName(names, column))
{
DataType = BufferTypeToDataRecordType(ConvertBufferDataTypeToFitManaged(column.DataType, ref isLong)),
MaxLength = column.Length == 0 ? -1 : column.Length
};
if (column.CodePage != 0)
{
dataColumn.ExtendedProperties.Add("codePage", column.CodePage);
Expand All @@ -128,6 +144,20 @@ public override void PreExecute()
}
}

private static string GetColumName(Dictionary<string, int> names, IDTSInputColumn100 column)
{
int value;
if (names.TryGetValue(column.Name, out value))
{
if (value > 1)
{
return string.Format("{0}_{1}", column.UpstreamComponentName, column.Name);
}
}

return string.Format("{0}", column.Name);
}

public override void ProcessInput(int inputID, PipelineBuffer buffer)
{
base.ProcessInput(inputID, buffer);
Expand All @@ -144,7 +174,7 @@ public override void ProcessInput(int inputID, PipelineBuffer buffer)
}
else
{
dataRow[columnMapping.Key] = buffer[columnMapping.Value];
dataRow[columnMapping.Key] = buffer[columnMapping.Value];
}
}
DataTable.Rows.Add(dataRow);
Expand All @@ -162,7 +192,7 @@ public override void ProcessInput(int inputID, PipelineBuffer buffer)
IDTSVariables variables = null;
VariableDispenser.LockOneForWrite(variableName, ref variables);
variables[variableName].Value = xml;
variables.Unlock();
variables.Unlock();
}
}
}
Expand Down

0 comments on commit 877bf17

Please sign in to comment.