@@ -369,25 +369,33 @@ public String getCriteriaGroupQuery(CriteriaGroup group, String eventTable) {
369
369
indexId ++;
370
370
}
371
371
372
- String occurrenceCountClause = "HAVING COUNT(index_id) " ;
373
-
374
- if (group .type .equalsIgnoreCase ("ALL" )) // count must match number of criteria + sub-groups in group.
375
- occurrenceCountClause += "= " + indexId ;
376
-
377
- if (group .type .equalsIgnoreCase ("ANY" )) // count must be > 0 for an 'ANY' criteria
378
- occurrenceCountClause += "> 0" ;
379
-
380
- if (group .type .toUpperCase ().startsWith ("AT_" ))
372
+ if (indexId > 0 ) // this group is not empty
381
373
{
382
- if (group .type .toUpperCase ().endsWith ("LEAST" ))
383
- occurrenceCountClause += ">= " + group .count ;
384
- else
385
- occurrenceCountClause += "<= " + group .count ;
374
+ query = StringUtils .replace (query , "@criteriaQueries" , StringUtils .join (additionalCriteriaQueries , "\n UNION ALL\n " ));
375
+
376
+ String occurrenceCountClause = "HAVING COUNT(index_id) " ;
377
+ if (group .type .equalsIgnoreCase ("ALL" )) // count must match number of criteria + sub-groups in group.
378
+ occurrenceCountClause += "= " + indexId ;
379
+
380
+ if (group .type .equalsIgnoreCase ("ANY" )) // count must be > 0 for an 'ANY' criteria
381
+ occurrenceCountClause += "> 0" ;
382
+
383
+ if (group .type .toUpperCase ().startsWith ("AT_" ))
384
+ {
385
+ if (group .type .toUpperCase ().endsWith ("LEAST" ))
386
+ occurrenceCountClause += ">= " + group .count ;
387
+ else
388
+ occurrenceCountClause += "<= " + group .count ;
389
+ }
390
+ query = StringUtils .replace (query , "@occurrenceCountClause" , occurrenceCountClause );
391
+ }
392
+ else // query group is empty so replace queries and occurence count clause with a friendly default
393
+ {
394
+ query = StringUtils .replace (query , "@criteriaQueries" , "select ET.person_id, ET.event_id from @eventTable ET" );
395
+ query = StringUtils .replace (query , "@occurrenceCountClause" , "" );
386
396
}
387
-
397
+
388
398
query = StringUtils .replace (query , "@eventTable" , eventTable );
389
- query = StringUtils .replace (query , "@occurrenceCountClause" , occurrenceCountClause );
390
- query = StringUtils .replace (query , "@criteriaQueries" , StringUtils .join (additionalCriteriaQueries , "\n UNION ALL\n " ));
391
399
392
400
return query ;
393
401
}
0 commit comments