diff --git a/dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/table/JdbcAnalyticsTableManager.java b/dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/table/JdbcAnalyticsTableManager.java index f0fb8b5c0b28..99adecc709d9 100644 --- a/dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/table/JdbcAnalyticsTableManager.java +++ b/dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/table/JdbcAnalyticsTableManager.java @@ -31,6 +31,7 @@ import static org.hisp.dhis.analytics.table.model.AnalyticsValueType.FACT; import static org.hisp.dhis.analytics.table.util.PartitionUtils.getLatestTablePartition; +import static org.hisp.dhis.commons.util.TextUtils.SPACE; import static org.hisp.dhis.commons.util.TextUtils.emptyIfTrue; import static org.hisp.dhis.commons.util.TextUtils.format; import static org.hisp.dhis.commons.util.TextUtils.replace; @@ -402,8 +403,21 @@ where des.valuetype in (${valTypes}) \ "startTime", toLongDate(params.getStartTime()), "deletedClause", sqlBuilder.isFalse("dv", "deleted")))); + sql.append(getStartEndDatesCondition(respectStartEndDates)); + + if (whereClause != null) { + sql.append(" and " + whereClause + " "); + } + + invokeTimeAndLog(sql.toString(), "Populating table: '{}' {}", tableName, valueTypes); + } + + String getStartEndDatesCondition(boolean respectStartEndDates) { + StringBuilder condition = new StringBuilder(""); + if (respectStartEndDates) { - sql.append( + condition.append(SPACE); + condition.append( """ and (aon.startdate is null or aon.startdate <= ps.startdate) \ and (aon.enddate is null or aon.enddate >= ps.enddate) \ @@ -411,11 +425,7 @@ where des.valuetype in (${valTypes}) \ and (con.enddate is null or con.enddate >= ps.enddate)\s"""); } - if (whereClause != null) { - sql.append(" and " + whereClause + " "); - } - - invokeTimeAndLog(sql.toString(), "Populating table: '{}' {}", tableName, valueTypes); + return condition.toString(); } /** diff --git a/dhis-2/dhis-services/dhis-service-analytics/src/test/java/org/hisp/dhis/analytics/table/JdbcAnalyticsTableManagerTest.java b/dhis-2/dhis-services/dhis-service-analytics/src/test/java/org/hisp/dhis/analytics/table/JdbcAnalyticsTableManagerTest.java index 1457bc806722..7a1ca540ec9c 100644 --- a/dhis-2/dhis-services/dhis-service-analytics/src/test/java/org/hisp/dhis/analytics/table/JdbcAnalyticsTableManagerTest.java +++ b/dhis-2/dhis-services/dhis-service-analytics/src/test/java/org/hisp/dhis/analytics/table/JdbcAnalyticsTableManagerTest.java @@ -350,4 +350,10 @@ void testGetApprovalJoinClause() { assertEquals(expected, subject.getApprovalJoinClause()); } + + @Test + void testGetStartEndDatesCondition() { + assertTrue(subject.getStartEndDatesCondition(false).isEmpty()); + assertTrue(subject.getStartEndDatesCondition(true).startsWith(" ")); + } }