@@ -2495,7 +2495,7 @@ private HashMap<String, Object[]> checkAndDeleteDupes(DataIterator rows,
24952495 // duplicate keys found in error
24962496 final LinkedHashMap <String ,Object []> noDeleteMap = new LinkedHashMap <>();
24972497
2498- StringBuilder sbIn = new StringBuilder ();
2498+ ArrayList < String > idList = new ArrayList <> ();
24992499 final Map <String , Object []> uriMap = new HashMap <>();
25002500 int count = 0 ;
25012501 while (rows .next ())
@@ -2530,9 +2530,7 @@ private HashMap<String, Object[]> checkAndDeleteDupes(DataIterator rows,
25302530 String sep = "" ;
25312531 if (uriMap .size () < 10000 || Boolean .TRUE ==replace )
25322532 {
2533- if (uniq .contains (("'" )))
2534- uniq = uniq .replaceAll ("'" ,"''" );
2535- sbIn .append (sep ).append ("'" ).append (uniq ).append ("'" );
2533+ idList .add (uniq );
25362534 }
25372535 count ++;
25382536 }
@@ -2549,7 +2547,7 @@ private HashMap<String, Object[]> checkAndDeleteDupes(DataIterator rows,
25492547 return null ;
25502548 }
25512549 else // also check target dataset
2552- return checkTargetDupesAndDelete (isDemographic , noDeleteMap , sbIn , uriMap );
2550+ return checkTargetDupesAndDelete (isDemographic , noDeleteMap , idList , uriMap );
25532551 }
25542552 catch (BatchValidationException vex )
25552553 {
@@ -2569,14 +2567,15 @@ private HashMap<String, Object[]> checkAndDeleteDupes(DataIterator rows,
25692567 }
25702568 }
25712569
2572- private HashMap <String , Object []> checkTargetDupesAndDelete (final boolean demographic , final LinkedHashMap <String , Object []> noDeleteMap , StringBuilder sbIn , final Map <String , Object []> uriMap )
2570+ private HashMap <String , Object []> checkTargetDupesAndDelete (final boolean demographic , final LinkedHashMap <String , Object []> noDeleteMap , ArrayList < String > idList , final Map <String , Object []> uriMap )
25732571 {
25742572 // duplicate keys found that should be deleted
25752573 final Set <String > deleteSet = new HashSet <>();
25762574
25772575 TableInfo tinfo = getStorageTableInfo (false );
25782576 SimpleFilter filter = new SimpleFilter ();
2579- filter .addWhereClause ((demographic ?"ParticipantId" :"LSID" ) + " IN (" + sbIn + ")" , new Object []{});
2577+ SQLFragment inClause = tinfo .getSqlDialect ().appendInClauseSql (new SQLFragment (demographic ?"ParticipantId" :"LSID" ), idList );
2578+ filter .addWhereClause (inClause );
25802579 if (isShared ())
25812580 {
25822581 Container rowsContainer = getContainer ();
0 commit comments