@@ -260,6 +260,7 @@ protected boolean isDml(String sql) {
260
260
261
261
@ Override
262
262
protected LoadStatus insert (CsvData data ) {
263
+ String [] values = null ;
263
264
try {
264
265
if (isRequiresSavePointsInTransaction && conflictResolver != null && conflictResolver .isIgnoreRow (this , data )) {
265
266
statistics .get (batch ).increment (DataWriterStatisticConstants .IGNOREROWCOUNT );
@@ -279,7 +280,7 @@ protected LoadStatus insert(CsvData data) {
279
280
boolean isFindAndThrowException = false ;
280
281
try {
281
282
Conflict conflict = writerSettings .pickConflict (targetTable , batch );
282
- String [] values = (String []) ArrayUtils .addAll (getRowData (data , CsvData .ROW_DATA ),
283
+ values = (String []) ArrayUtils .addAll (getRowData (data , CsvData .ROW_DATA ),
283
284
currentDmlStatement .getLookupKeyData (getLookupDataMap (data , conflict )));
284
285
long count = execute (data , values );
285
286
statistics .get (batch ).increment (DataWriterStatisticConstants .INSERTCOUNT , count );
@@ -305,7 +306,7 @@ protected LoadStatus insert(CsvData data) {
305
306
}
306
307
}
307
308
} catch (RuntimeException ex ) {
308
- logFailureDetails (ex , data , true );
309
+ logFailureDetails (ex , data , true , values );
309
310
throw ex ;
310
311
} finally {
311
312
statistics .get (batch ).stopTimer (DataWriterStatisticConstants .LOADMILLIS );
@@ -967,6 +968,11 @@ private void removeExcludedColumns(Conflict conflict,
967
968
968
969
@ Override
969
970
protected void logFailureDetails (Throwable e , CsvData data , boolean logLastDmlDetails ) {
971
+ logFailureDetails (e , data , logLastDmlDetails , currentDmlValues );
972
+ }
973
+
974
+ @ Override
975
+ protected void logFailureDetails (Throwable e , CsvData data , boolean logLastDmlDetails , Object [] values ) {
970
976
StringBuilder failureMessage = new StringBuilder ();
971
977
failureMessage .append ("Failed to process " );
972
978
failureMessage .append (data .getDataEventType ().toString ().toLowerCase ());
@@ -979,7 +985,7 @@ protected void logFailureDetails(Throwable e, CsvData data, boolean logLastDmlDe
979
985
boolean shouldLogRawSql = true ;
980
986
if (writerSettings .isLogSqlParamsOnError ()) {
981
987
failureMessage .append ("Failed sql was: " );
982
- String dynamicSQL = logSqlBuilder .buildDynamicSqlForLog (currentDmlStatement .getSql (), currentDmlValues , currentDmlStatement .getTypes ());
988
+ String dynamicSQL = logSqlBuilder .buildDynamicSqlForLog (currentDmlStatement .getSql (), values , currentDmlStatement .getTypes ());
983
989
failureMessage .append (dynamicSQL );
984
990
failureMessage .append ("\n " );
985
991
shouldLogRawSql = !dynamicSQL .equals (currentDmlStatement .getSql ());
@@ -990,10 +996,10 @@ protected void logFailureDetails(Throwable e, CsvData data, boolean logLastDmlDe
990
996
}
991
997
failureMessage .append ("\n " );
992
998
}
993
- if (logLastDmlDetails && currentDmlValues != null && currentDmlStatement != null ) {
999
+ if (logLastDmlDetails && values != null && currentDmlStatement != null ) {
994
1000
if (writerSettings .isLogSqlParamsOnError ()) {
995
1001
failureMessage .append ("Failed sql parameters: " );
996
- failureMessage .append (StringUtils .abbreviate ("[" + dmlValuesToString (currentDmlValues , currentDmlStatement .getTypes ()) + "]" ,
1002
+ failureMessage .append (StringUtils .abbreviate ("[" + dmlValuesToString (values , currentDmlStatement .getTypes ()) + "]" ,
997
1003
CsvData .MAX_DATA_SIZE_TO_PRINT_TO_LOG ));
998
1004
failureMessage .append ("\n " );
999
1005
}
0 commit comments