DBZ-3332 Limit oldest archive log query to only active records

This commit is contained in:
Chris Cranford 2021-05-10 09:03:19 -04:00 committed by Jiri Pechanec
parent 6e4abbdb68
commit 1d46cdb6b7
2 changed files with 2 additions and 1 deletions

View File

@ -136,6 +136,7 @@ static String oldestFirstChangeQuery(Duration archiveLogRetention) {
sb.append("UNION SELECT MIN(FIRST_CHANGE#) AS FIRST_CHANGE# ");
sb.append("FROM ").append(ARCHIVED_LOG_VIEW).append(" ");
sb.append("WHERE DEST_ID IN (").append(localArchiveLogDestinationsOnlyQuery()).append(") ");
sb.append("AND STATUS='A'");
if (!archiveLogRetention.isNegative() && !archiveLogRetention.isZero()) {
sb.append("AND FIRST_TIME >= SYSDATE - (").append(archiveLogRetention.toHours()).append("/24)");

View File

@ -236,7 +236,7 @@ public void testStatements() {
result = SqlUtils.oldestFirstChangeQuery(Duration.ofHours(0L));
expected = "SELECT MIN(FIRST_CHANGE#) FROM (SELECT MIN(FIRST_CHANGE#) AS FIRST_CHANGE# FROM V$LOG UNION SELECT MIN(FIRST_CHANGE#)" +
" AS FIRST_CHANGE# FROM V$ARCHIVED_LOG WHERE DEST_ID IN (SELECT DEST_ID FROM V$ARCHIVE_DEST_STATUS" +
" WHERE STATUS='VALID' AND TYPE='LOCAL' AND ROWNUM=1) )";
" WHERE STATUS='VALID' AND TYPE='LOCAL' AND ROWNUM=1) AND STATUS='A')";
assertThat(result).isEqualTo(expected);
result = SqlUtils.allOnlineLogsQuery();