[FINERACT-1936] fixing SQL queries that was failing on Maria DB

This commit is contained in:
taskain7
2023-06-05 23:25:37 +02:00
parent 9698b6d5b3
commit 94a552bbde
@@ -54,19 +54,19 @@ public class JobExecutionRepository implements InitializingBean {
public List<String> getStuckJobNames(NamedParameterJdbcTemplate jdbcTemplate) { public List<String> getStuckJobNames(NamedParameterJdbcTemplate jdbcTemplate) {
int threshold = fineractProperties.getJob().getStuckRetryThreshold(); int threshold = fineractProperties.getJob().getStuckRetryThreshold();
return jdbcTemplate.queryForList(""" return jdbcTemplate.queryForList("""
SELECT DISTINCT(bji.JOB_NAME) as STUCK_JOB_NAME SELECT DISTINCT(BJI.JOB_NAME) as STUCK_JOB_NAME
FROM BATCH_JOB_INSTANCE bji FROM BATCH_JOB_INSTANCE BJI
INNER JOIN BATCH_JOB_EXECUTION bje INNER JOIN BATCH_JOB_EXECUTION BJE
ON bji.JOB_INSTANCE_ID = bje.JOB_INSTANCE_ID ON BJI.JOB_INSTANCE_ID = BJE.JOB_INSTANCE_ID
WHERE WHERE
bje.STATUS IN (:statuses) BJE.STATUS IN (:statuses)
AND AND
bje.JOB_INSTANCE_ID NOT IN ( BJE.JOB_INSTANCE_ID NOT IN (
SELECT bje.JOB_INSTANCE_ID SELECT IBJE.JOB_INSTANCE_ID
FROM BATCH_JOB_INSTANCE bji FROM BATCH_JOB_INSTANCE IBJI
INNER JOIN BATCH_JOB_EXECUTION bje INNER JOIN BATCH_JOB_EXECUTION IBJE
ON bji.JOB_INSTANCE_ID = bje.JOB_INSTANCE_ID ON IBJI.JOB_INSTANCE_ID = IBJE.JOB_INSTANCE_ID
WHERE bje.STATUS IN (:completedStatuses) WHERE IBJE.STATUS IN (:completedStatuses)
) )
GROUP BY BJI.JOB_INSTANCE_ID GROUP BY BJI.JOB_INSTANCE_ID
HAVING COUNT(BJI.JOB_INSTANCE_ID) <= :threshold HAVING COUNT(BJI.JOB_INSTANCE_ID) <= :threshold
@@ -77,24 +77,24 @@ public class JobExecutionRepository implements InitializingBean {
public Long getStuckJobCountByJobName(String jobName) { public Long getStuckJobCountByJobName(String jobName) {
int threshold = fineractProperties.getJob().getStuckRetryThreshold(); int threshold = fineractProperties.getJob().getStuckRetryThreshold();
return namedParameterJdbcTemplate.queryForObject(""" return namedParameterJdbcTemplate.queryForObject("""
SELECT COUNT(DISTINCT bji.JOB_NAME) as STUCK_JOB_COUNT SELECT COUNT(DISTINCT BJI.JOB_NAME) as STUCK_JOB_COUNT
FROM BATCH_JOB_INSTANCE bji FROM BATCH_JOB_INSTANCE BJI
INNER JOIN BATCH_JOB_EXECUTION bje INNER JOIN BATCH_JOB_EXECUTION BJE
ON bji.JOB_INSTANCE_ID = bje.JOB_INSTANCE_ID ON BJI.JOB_INSTANCE_ID = BJE.JOB_INSTANCE_ID
WHERE WHERE
bje.STATUS IN (:statuses) BJE.STATUS IN (:statuses)
AND AND
bji.JOB_NAME = :jobName BJI.JOB_NAME = :jobName
AND AND
bje.JOB_INSTANCE_ID NOT IN ( BJE.JOB_INSTANCE_ID NOT IN (
SELECT bje.JOB_INSTANCE_ID SELECT IBJE.JOB_INSTANCE_ID
FROM BATCH_JOB_INSTANCE bji FROM BATCH_JOB_INSTANCE IBJI
INNER JOIN BATCH_JOB_EXECUTION bje INNER JOIN BATCH_JOB_EXECUTION IBJE
ON bji.JOB_INSTANCE_ID = bje.JOB_INSTANCE_ID ON IBJI.JOB_INSTANCE_ID = IBJE.JOB_INSTANCE_ID
WHERE WHERE
bje.STATUS IN (:completedStatuses) IBJE.STATUS IN (:completedStatuses)
AND AND
bji.JOB_NAME = :jobName IBJI.JOB_NAME = :jobName
) )
GROUP BY BJI.JOB_INSTANCE_ID GROUP BY BJI.JOB_INSTANCE_ID
HAVING COUNT(BJI.JOB_INSTANCE_ID) <= :threshold HAVING COUNT(BJI.JOB_INSTANCE_ID) <= :threshold
@@ -105,24 +105,24 @@ public class JobExecutionRepository implements InitializingBean {
public List<Long> getStuckJobIdsByJobName(String jobName) { public List<Long> getStuckJobIdsByJobName(String jobName) {
int threshold = fineractProperties.getJob().getStuckRetryThreshold(); int threshold = fineractProperties.getJob().getStuckRetryThreshold();
return namedParameterJdbcTemplate.queryForList(""" return namedParameterJdbcTemplate.queryForList("""
SELECT bje.JOB_EXECUTION_ID SELECT BJE.JOB_EXECUTION_ID
FROM BATCH_JOB_INSTANCE bji FROM BATCH_JOB_INSTANCE BJI
INNER JOIN BATCH_JOB_EXECUTION bje INNER JOIN BATCH_JOB_EXECUTION BJE
ON bji.JOB_INSTANCE_ID = bje.JOB_INSTANCE_ID ON BJI.JOB_INSTANCE_ID = BJE.JOB_INSTANCE_ID
WHERE WHERE
bje.STATUS IN (:statuses) BJE.STATUS IN (:statuses)
AND AND
bji.JOB_NAME = :jobName BJI.JOB_NAME = :jobName
AND AND
bje.JOB_INSTANCE_ID NOT IN ( BJE.JOB_INSTANCE_ID NOT IN (
SELECT bje.JOB_INSTANCE_ID SELECT IBJE.JOB_INSTANCE_ID
FROM BATCH_JOB_INSTANCE bji FROM BATCH_JOB_INSTANCE IBJI
INNER JOIN BATCH_JOB_EXECUTION bje INNER JOIN BATCH_JOB_EXECUTION IBJE
ON bji.JOB_INSTANCE_ID = bje.JOB_INSTANCE_ID ON IBJI.JOB_INSTANCE_ID = IBJE.JOB_INSTANCE_ID
WHERE WHERE
bje.STATUS IN (:completedStatuses) IBJE.STATUS IN (:completedStatuses)
AND AND
bji.JOB_NAME = :jobName IBJI.JOB_NAME = :jobName
) )
GROUP BY BJI.JOB_INSTANCE_ID, BJE.JOB_EXECUTION_ID GROUP BY BJI.JOB_INSTANCE_ID, BJE.JOB_EXECUTION_ID
HAVING COUNT(BJI.JOB_INSTANCE_ID) <= :threshold HAVING COUNT(BJI.JOB_INSTANCE_ID) <= :threshold
@@ -133,13 +133,13 @@ public class JobExecutionRepository implements InitializingBean {
public Long getNotCompletedPartitionsCount(Long jobExecutionId, String partitionerStepName) { public Long getNotCompletedPartitionsCount(Long jobExecutionId, String partitionerStepName) {
return namedParameterJdbcTemplate.queryForObject(""" return namedParameterJdbcTemplate.queryForObject("""
SELECT COUNT(bse.STEP_EXECUTION_ID) SELECT COUNT(bse.STEP_EXECUTION_ID)
FROM BATCH_STEP_EXECUTION bse FROM BATCH_STEP_EXECUTION BSE
WHERE WHERE
bse.JOB_EXECUTION_ID = :jobExecutionId BSE.JOB_EXECUTION_ID = :jobExecutionId
AND AND
bse.STEP_NAME <> :stepName BSE.STEP_NAME <> :stepName
AND AND
bse.status <> :status BSE.status <> :status
""", Map.of("jobExecutionId", jobExecutionId, "stepName", partitionerStepName, "status", COMPLETED.name()), Long.class); """, Map.of("jobExecutionId", jobExecutionId, "stepName", partitionerStepName, "status", COMPLETED.name()), Long.class);
} }