Skip to content

Commit

Permalink
0000803: Check that column names match column values in the abstract …
Browse files Browse the repository at this point in the history
…router. If not log details.
  • Loading branch information
chenson42 committed Sep 6, 2012
1 parent cb47cec commit f0b71d6
Showing 1 changed file with 7 additions and 7 deletions.
Expand Up @@ -97,7 +97,7 @@ protected Map<String, String> getDataAsString(String prefix, DataMetaData dataMe
String[] columns = dataMetaData.getTriggerHistory().getParsedColumnNames();
Map<String, String> map = new HashMap<String, String>(columns.length);
if (rowData != null) {
testSize(dataMetaData, symmetricDialect, columns, rowData);
testColumnNamesMatchValues(dataMetaData, symmetricDialect, columns, rowData);
for (int i = 0; i < columns.length; i++) {
String columnName = columns[i].toUpperCase();
map.put(prefix != null ? prefix + columnName : columnName, rowData[i]);
Expand All @@ -111,7 +111,7 @@ protected Map<String, String> getPkDataAsString(DataMetaData dataMetaData, ISymm
String[] rowData = dataMetaData.getData().toParsedPkData();
Map<String, String> map = new HashMap<String, String>(columns.length);
if (rowData != null) {
testSize(dataMetaData, symmetricDialect, columns, rowData);
testColumnNamesMatchValues(dataMetaData, symmetricDialect, columns, rowData);
for (int i = 0; i < columns.length; i++) {
String columnName = columns[i].toUpperCase();
map.put(columnName, rowData[i]);
Expand Down Expand Up @@ -179,7 +179,7 @@ protected Map<String, Object> getDataAsObject(String prefix, DataMetaData dataMe
Object[] objects = symmetricDialect.getPlatform().getObjectValues(
symmetricDialect.getBinaryEncoding(), dataMetaData.getTable(), columnNames,
rowData);
testSize(dataMetaData, symmetricDialect, columnNames, objects);
testColumnNamesMatchValues(dataMetaData, symmetricDialect, columnNames, objects);
for (int i = 0; i < columnNames.length; i++) {
String upperCase = columnNames[i].toUpperCase();
data.put(prefix != null ? (prefix + upperCase) : upperCase, objects[i]);
Expand All @@ -190,12 +190,12 @@ protected Map<String, Object> getDataAsObject(String prefix, DataMetaData dataMe
}
}

protected void testSize(DataMetaData dataMetaData, ISymmetricDialect symmetricDialect, String[] columnNames, Object[] values) {
protected void testColumnNamesMatchValues(DataMetaData dataMetaData, ISymmetricDialect symmetricDialect, String[] columnNames, Object[] values) {
if (columnNames.length != values.length) {
String possibleOracleErrorMessage = "";
if (symmetricDialect.getPlatform().getName().equals(DatabaseNamesConstants.ORACLE)) {
boolean isUseCaptureLobs = dataMetaData.getTriggerRouter().getTrigger().isUseCaptureLobs();
possibleOracleErrorMessage = String.format("One possible cause of this issue is when trigger.use_capture_lobs=0 and the captured row_data size exceeds 4k, captured data will be truncated at 4k. trigger.use_capture_lobs is currently set to %s.", isUseCaptureLobs ? "1" : "0");
boolean isContainsBigLobs = dataMetaData.getNodeChannel().isContainsBigLob();
possibleOracleErrorMessage = String.format("One possible cause of this issue is when channel.contains_big_lobs=0 and the captured row_data size exceeds 4k, captured data will be truncated at 4k. channel.contains_big_lobs is currently set to %s.", isContainsBigLobs ? "1" : "0");
}
String message = String.format(
"The number of recorded column names (%d) did not match the number of captured data values (%d). The failed data_id is %d and the event type is %s. %s\ncolumn_names:\n%s\nvalues:\n%s",
Expand All @@ -217,7 +217,7 @@ protected Map<String, Object> getPkDataAsObject(DataMetaData dataMetaData,
Object[] objects = symmetricDialect.getPlatform().getObjectValues(
symmetricDialect.getBinaryEncoding(), dataMetaData.getTable(), columnNames,
rowData);
testSize(dataMetaData, symmetricDialect, columnNames, objects);
testColumnNamesMatchValues(dataMetaData, symmetricDialect, columnNames, objects);
for (int i = 0; i < columnNames.length; i++) {
data.put(columnNames[i].toUpperCase(), objects[i]);
}
Expand Down

0 comments on commit f0b71d6

Please sign in to comment.