Skip to content

Commit 79d711a

Browse files
committed
1 parent d3468bf commit 79d711a

File tree

2 files changed

+37
-4
lines changed

2 files changed

+37
-4
lines changed

TextFileSplitter/TextFileSplitter2012/TextFileSplitter.cs

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2366,7 +2366,8 @@ public override void PrimeOutput(int outputs, int[] outputIDs, PipelineBuffer[]
23662366
Object currentValue = null;
23672367
foreach (SSISOutputColumn errorOutputColumn in errorOutput.OutputColumnCollection)
23682368
{
2369-
if (ManageProperties.Contains(errorOutputColumn.CustomPropertyCollection, ManageProperties.keyOutputColumnID))
2369+
if ((ManageProperties.Contains(errorOutputColumn.CustomPropertyCollection, ManageProperties.keyOutputColumnID))
2370+
&& (typeOfOutput != Utilities.typeOfOutputEnum.KeyRecords))
23702371
{
23712372
if (keyMasterValues.TryGetValue((int)ManageProperties.GetPropertyValue(errorOutputColumn.CustomPropertyCollection, ManageProperties.keyOutputColumnID), out currentValue))
23722373
{
@@ -2386,7 +2387,19 @@ public override void PrimeOutput(int outputs, int[] outputIDs, PipelineBuffer[]
23862387
if (errorFound)
23872388
break;
23882389
}
2389-
currentSplitOutput.IncrementRowCount();
2390+
if (!errorFound)
2391+
currentSplitOutput.IncrementRowCount();
2392+
else
2393+
{
2394+
if (typeOfOutput == Utilities.typeOfOutputEnum.KeyRecords)
2395+
{
2396+
keyRecordFailure = true;
2397+
foreach (int keyID in keyMasterValues.Keys.ToList())
2398+
{
2399+
keyMasterValues[keyID] = null;
2400+
}
2401+
}
2402+
}
23902403
}
23912404
}
23922405
}

TextFileSplitter/UnitTestTextFileSplitter2012/TestPrimeOutput.cs

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -676,13 +676,33 @@ public void TestPrimeOutput_TestDataFileWithManyErrorsAndRowCountOutput()
676676
Assert.AreEqual(2, sqlData.GetInt32(0), "Number of Delimiter Not Found incorrect");
677677
}
678678

679+
rowCount = 0;
680+
sqlCommand.CommandText = "SELECT * FROM [ErrorResults] WHERE ErrorMessage LIKE '%not found after field%' AND RowData = 'IAMBAD'";
681+
sqlData = sqlCommand.ExecuteReader(CommandBehavior.Default);
682+
while (sqlData.Read())
683+
{
684+
Assert.IsTrue(sqlData.IsDBNull(5), "KeyColumn1 has a value for IAMBAD");
685+
rowCount++;
686+
}
687+
Assert.AreEqual(1, rowCount, "2nd IAMBAD Error Missing");
688+
679689
sqlCommand.CommandText = "SELECT COUNT(*) FROM [ErrorResults] WHERE ErrorMessage LIKE '%The value is too large to fit in the column data area of the buffer%'";
680690
sqlData = sqlCommand.ExecuteReader(CommandBehavior.Default);
681691
while (sqlData.Read())
682692
{
683693
Assert.AreEqual(2, sqlData.GetInt32(0), "Number of To Big incorrect");
684694
}
685695

696+
rowCount = 0;
697+
sqlCommand.CommandText = "SELECT * FROM [ErrorResults] WHERE ErrorMessage LIKE '%The value is too large to fit in the column data area of the buffer%' AND ColumnData = '2nd Start Invoice Record'";
698+
sqlData = sqlCommand.ExecuteReader(CommandBehavior.Default);
699+
while (sqlData.Read())
700+
{
701+
Assert.IsTrue(sqlData.IsDBNull(5), "KeyColumn1 has a value for ValueToLarge");
702+
rowCount++;
703+
}
704+
Assert.AreEqual(1, rowCount, "2nd Start Invoice Record Error Missing");
705+
686706
sqlCommand.CommandText = "SELECT COUNT(*) FROM [ErrorResults] WHERE ErrorMessage LIKE '%Int32%'";
687707
sqlData = sqlCommand.ExecuteReader(CommandBehavior.Default);
688708
while (sqlData.Read())
@@ -709,7 +729,7 @@ public void TestPrimeOutput_TestDataFileWithManyErrorsAndRowCountOutput()
709729
sqlData = sqlCommand.ExecuteReader(CommandBehavior.Default);
710730
while (sqlData.Read())
711731
{
712-
Assert.AreEqual(2, sqlData.GetInt32(1), "Number of 001 incorrect");
732+
Assert.AreEqual(1, sqlData.GetInt32(1), "Number of 001 incorrect");
713733
Assert.AreEqual("Connected and Processed", sqlData.GetString(2), "KeyValue Status on 001 incorrect");
714734
}
715735

@@ -726,7 +746,7 @@ public void TestPrimeOutput_TestDataFileWithManyErrorsAndRowCountOutput()
726746
while (sqlData.Read())
727747
{
728748
Assert.AreEqual(5, sqlData.GetInt32(1), "Number of 003 incorrect");
729-
Assert.AreEqual("Connected and Processed", sqlData.GetString(2), "KeyValue Status on 003 incorrect");
749+
Assert.AreEqual("Not configured", sqlData.GetString(2), "KeyValue Status on 003 incorrect");
730750
}
731751

732752

0 commit comments

Comments
 (0)