@@ -233,10 +233,16 @@ private void assertSQL(
233
233
try {
234
234
entityService .ingestProposal (opContext , batch , false );
235
235
// First collect all SQL statements that start with "txn[]"
236
- List <String > allSqlStatements =
237
- LoggedSql .collect ().stream ()
238
- .filter (sql -> sql .startsWith ("txn[]" ))
239
- .collect (Collectors .toList ());
236
+ List <String > allSqlStatements = new ArrayList <>();
237
+ for (String sqlGroup : LoggedSql .collect ()) {
238
+ // Split by "txn[]" but preserve the prefix
239
+ String [] parts = sqlGroup .split ("(?=txn\\ [\\ ])" );
240
+ for (String part : parts ) {
241
+ if (part .startsWith ("txn[]" )) {
242
+ allSqlStatements .add (part );
243
+ }
244
+ }
245
+ }
240
246
241
247
// Then process them to fold comments into previous lines
242
248
List <String > txnLog = new ArrayList <>();
@@ -273,29 +279,41 @@ private void assertSQL(
273
279
statementMap .getOrDefault ("UNKNOWN" , List .of ()).size (),
274
280
0 ,
275
281
String .format (
276
- "(%s) Expected all SQL statements to be categorized: %s" ,
277
- description , statementMap .get ("UNKNOWN" )));
282
+ "(%s) Expected all SQL statements to be categorized:\n %s" ,
283
+ description , formatUnknownStatements ( statementMap .get ("UNKNOWN" ) )));
278
284
assertEquals (
279
285
statementMap .getOrDefault ("SELECT" , List .of ()).size (),
280
286
expectedSelectCount ,
281
287
String .format (
282
- "(%s) Expected SELECT SQL count mismatch filtering for (%s): %s" ,
283
- description , mustInclude , statementMap .get ("SELECT" )));
288
+ "(%s) Expected SELECT SQL count mismatch filtering for (%s):\n %s" ,
289
+ description , mustInclude , formatUnknownStatements ( statementMap .get ("SELECT" ) )));
284
290
assertEquals (
285
291
statementMap .getOrDefault ("INSERT" , List .of ()).size (),
286
292
expectedInsertCount ,
287
293
String .format (
288
- "(%s) Expected INSERT SQL count mismatch filtering for (%s): %s" ,
289
- description , mustInclude , statementMap .get ("INSERT" )));
294
+ "(%s) Expected INSERT SQL count mismatch filtering for (%s):\n %s" ,
295
+ description , mustInclude , formatUnknownStatements ( statementMap .get ("INSERT" ) )));
290
296
assertEquals (
291
297
statementMap .getOrDefault ("UPDATE" , List .of ()).size (),
292
298
expectedUpdateCount ,
293
299
String .format (
294
- "(%s), Expected UPDATE SQL count mismatch filtering for (%s): %s" ,
295
- description , mustInclude , statementMap .get ("UPDATE" )));
300
+ "(%s), Expected UPDATE SQL count mismatch filtering for (%s):\n %s" ,
301
+ description , mustInclude , formatUnknownStatements ( statementMap .get ("UPDATE" ) )));
296
302
} finally {
297
303
// Ensure logging is stopped even if assertions fail
298
304
LoggedSql .stop ();
299
305
}
300
306
}
307
+
308
+ private static String formatUnknownStatements (List <String > statements ) {
309
+ if (statements == null || statements .isEmpty ()) {
310
+ return " No unknown statements" ;
311
+ }
312
+
313
+ StringBuilder builder = new StringBuilder ();
314
+ for (int i = 0 ; i < statements .size (); i ++) {
315
+ builder .append (" " ).append (i + 1 ).append (". " ).append (statements .get (i )).append ("\n " );
316
+ }
317
+ return builder .toString ();
318
+ }
301
319
}
0 commit comments