Skip to content

Commit

Permalink
0004552: Transforms break deletes when transforming primary key column
Browse files Browse the repository at this point in the history
and not capturing old data as specified in trigger
  • Loading branch information
Philip Marzullo committed Sep 16, 2020
1 parent 1dc9f48 commit 4a598cb
Show file tree
Hide file tree
Showing 12 changed files with 30 additions and 12 deletions.
Expand Up @@ -152,7 +152,7 @@ public NewAndOldValue transform(IDatabasePlatform platform,
}

if (result instanceof String) {
if (data.getTargetDmlType().equals(DataEventType.DELETE)) {
if (data.getTargetDmlType().equals(DataEventType.DELETE) && !column.isPk()) {
return new NewAndOldValue(null, (String) result);
} else {
return new NewAndOldValue((String) result, null);
Expand Down
Expand Up @@ -108,7 +108,7 @@ public NewAndOldValue transform(IDatabasePlatform platform,
column.getTargetColumnName(), column.getTransformId());
}

if (data.getTargetDmlType().equals(DataEventType.DELETE)) {
if (data.getTargetDmlType().equals(DataEventType.DELETE) && !column.isPk()) {
return new NewAndOldValue(null, lookupValue);
} else {
return new NewAndOldValue(lookupValue, null);
Expand Down
Expand Up @@ -60,7 +60,7 @@ public NewAndOldValue transform(IDatabasePlatform platform,
value = parameterService.getString(paramName);
}

if (data.getTargetDmlType().equals(DataEventType.DELETE)) {
if (data.getTargetDmlType().equals(DataEventType.DELETE) && !column.isPk()) {
return new NewAndOldValue(null, value);
} else {
return new NewAndOldValue(value, null);
Expand Down
Expand Up @@ -137,7 +137,7 @@ public NewAndOldValue transform(IDatabasePlatform platform,
}
}

if (data.getTargetDmlType().equals(DataEventType.DELETE)) {
if (data.getTargetDmlType().equals(DataEventType.DELETE) && !column.isPk()) {
return new NewAndOldValue(null, value);
} else {
return new NewAndOldValue(value, null);
Expand Down
Expand Up @@ -105,6 +105,20 @@ public void testUpdateActionBeanShellScript() throws Exception {
Assert.assertEquals(DataEventType.UPDATE, datas.get(2).getDataEventType());
Assert.assertEquals(DataEventType.UPDATE, datas.get(3).getDataEventType());
}

@Test
public void testDeleteNoCaptureOldData() throws Exception {
mockWriter.reset();
Table table = new Table("s4", new Column("id"));
writeData(getTransformWriter(), new TableCsvData(table,
new CsvData(DataEventType.DELETE, new String[] {"1"}, null)));
List<CsvData> datas = mockWriter.writtenDatas.get("t4");
Assert.assertEquals(1, datas.size());
Assert.assertEquals(DataEventType.DELETE, datas.get(0).getDataEventType());
String[] pkData = datas.get(0).getParsedData(CsvData.PK_DATA);
Assert.assertEquals(1, pkData.length);
Assert.assertEquals("1", pkData[0]);
}


@Test
Expand All @@ -124,6 +138,9 @@ public void testIgnoreRowExceptionFromBshMapping() throws Exception {
}

protected TransformWriter getTransformWriter() {
TransformTable transformTable4 =
new TransformTable("s4", "t4", TransformPoint.LOAD,
new TransformColumn("id", "id", true, "const", "1"));
TransformTable transformTable3 =
new TransformTable("s3", "t3", TransformPoint.LOAD, new TransformColumn("id", "id", true));
transformTable3.setUpdateAction("switch (id) { case \"1\": return \"INS_ROW\"; case \"2\": "
Expand All @@ -133,7 +150,8 @@ protected TransformWriter getTransformWriter() {
new TransformTable("s1", "t1", TransformPoint.LOAD, new TransformColumn("id", "id", true)),
new TransformTable("s2", "t2", TransformPoint.LOAD, new TransformColumn("id", "id", true),
new TransformColumn(null, "col2", false, "const", "added")),
transformTable3
transformTable3,
transformTable4
});
}

Expand Down
Expand Up @@ -57,7 +57,7 @@ public NewAndOldValue transform(IDatabasePlatform platform,
}
}

if (data.getTargetDmlType().equals(DataEventType.DELETE)) {
if (data.getTargetDmlType().equals(DataEventType.DELETE) && !column.isPk()) {
return new NewAndOldValue(null, newValue);
} else {
return new NewAndOldValue(newValue, null);
Expand Down
Expand Up @@ -60,7 +60,7 @@ public NewAndOldValue transform(IDatabasePlatform platform,
}
String value = convertClarionDate(newValue, clarionTimeStr);

if (data.getTargetDmlType().equals(DataEventType.DELETE)) {
if (data.getTargetDmlType().equals(DataEventType.DELETE) && !column.isPk()) {
return new NewAndOldValue(null, value);
} else {
return new NewAndOldValue(value, null);
Expand Down
Expand Up @@ -49,7 +49,7 @@ public NewAndOldValue transform(IDatabasePlatform platform,
TransformColumn column, TransformedData data, Map<String, String> sourceValues,
String newValue, String oldValue) throws IgnoreColumnException, IgnoreRowException {

if (data.getTargetDmlType().equals(DataEventType.DELETE)) {
if (data.getTargetDmlType().equals(DataEventType.DELETE) && !column.isPk()) {
return new NewAndOldValue(null, column.getTransformExpression());
} else {
return new NewAndOldValue(column.getTransformExpression(), null);
Expand Down
Expand Up @@ -35,7 +35,7 @@ public NewAndOldValue transform(IDatabasePlatform platform,
}
}

if (data.getTargetDmlType().equals(DataEventType.DELETE)) {
if (data.getTargetDmlType().equals(DataEventType.DELETE) && !column.isPk()) {
return new NewAndOldValue(null, value);
} else {
return new NewAndOldValue(value, null);
Expand Down
Expand Up @@ -62,7 +62,7 @@ public NewAndOldValue transform(IDatabasePlatform platform,
}
}

if (data.getTargetDmlType().equals(DataEventType.DELETE)) {
if (data.getTargetDmlType().equals(DataEventType.DELETE) && !column.isPk()) {
return new NewAndOldValue(null, value);
} else {
return new NewAndOldValue(value, null);
Expand Down
Expand Up @@ -73,7 +73,7 @@ public NewAndOldValue transform(IDatabasePlatform platform,
result = result.substring(0, result.length()-2);
}

if (data.getTargetDmlType().equals(DataEventType.DELETE)) {
if (data.getTargetDmlType().equals(DataEventType.DELETE) && !column.isPk()) {
return new NewAndOldValue(null, result);
} else {
return new NewAndOldValue(result, null);
Expand Down
Expand Up @@ -75,7 +75,7 @@ public NewAndOldValue transform(IDatabasePlatform platform,
}
}

if (data.getTargetDmlType().equals(DataEventType.DELETE)) {
if (data.getTargetDmlType().equals(DataEventType.DELETE) && !column.isPk()) {
return new NewAndOldValue(null, newValue);
} else {
return new NewAndOldValue(newValue, null);
Expand Down

0 comments on commit 4a598cb

Please sign in to comment.