diff --git a/MARS_Packages/REL01_ADDITIONS/MARS-828/new_version/FILE_ARCHIVER.pkb b/MARS_Packages/REL01_ADDITIONS/MARS-828/new_version/FILE_ARCHIVER.pkb index b882db5..f26633e 100644 --- a/MARS_Packages/REL01_ADDITIONS/MARS-828/new_version/FILE_ARCHIVER.pkb +++ b/MARS_Packages/REL01_ADDITIONS/MARS-828/new_version/FILE_ARCHIVER.pkb @@ -7,7 +7,7 @@ AS /** * @name GET_ARCHIVAL_WHERE_CLAUSE * @desc Private function that generates WHERE clause based on ARCHIVAL_STRATEGY configuration. - * Supports four strategies: THRESHOLD_BASED, CURRENT_MONTH_ONLY, MINIMUM_AGE_MONTHS, HYBRID. + * Supports three strategies: THRESHOLD_BASED, MINIMUM_AGE_MONTHS, HYBRID. * @param pSourceFileConfig - Source file configuration record with ARCHIVAL_STRATEGY * @return VARCHAR2 - WHERE clause for filtering archival candidates **/ @@ -120,11 +120,19 @@ AS vTableStat := GET_TABLE_STAT(pSourceFileConfigKey => pSourceFileConfigKey); end if; - if vTableStat.OVER_ARCH_THRESOLD_FILE_COUNT >= vSourceFileConfig.FILES_COUNT_OVER_ARCHIVE_THRESHOLD then vArchivalTriggeredBy := 'FILES_COUNT'; - elsif vTableStat.OVER_ARCH_THRESOLD_ROW_COUNT >= vSourceFileConfig.ROWS_COUNT_OVER_ARCHIVE_THRESHOLD then vArchivalTriggeredBy := vArchivalTriggeredBy||', ROWS_COUNT'; - elsif vTableStat.OVER_ARCH_THRESOLD_SIZE >= vSourceFileConfig.BYTES_SUM_OVER_ARCHIVE_THRESHOLD then vArchivalTriggeredBy := vArchivalTriggeredBy||', BYTES_SUM'; - else ENV_MANAGER.LOG_PROCESS_EVENT('Non of archival triggers reached','INFO'); - end if; + -- Strategy-based trigger logic (MARS-828) + IF vSourceFileConfig.ARCHIVAL_STRATEGY = 'MINIMUM_AGE_MONTHS' THEN + -- MINIMUM_AGE_MONTHS: Archive based on age only, ignore thresholds + vArchivalTriggeredBy := 'AGE_BASED'; + ENV_MANAGER.LOG_PROCESS_EVENT('Archival strategy: MINIMUM_AGE_MONTHS (threshold-independent)','INFO'); + ELSE + -- THRESHOLD_BASED and HYBRID: Check thresholds + if vTableStat.OVER_ARCH_THRESOLD_FILE_COUNT >= vSourceFileConfig.FILES_COUNT_OVER_ARCHIVE_THRESHOLD then vArchivalTriggeredBy := 'FILES_COUNT'; + elsif vTableStat.OVER_ARCH_THRESOLD_ROW_COUNT >= vSourceFileConfig.ROWS_COUNT_OVER_ARCHIVE_THRESHOLD then vArchivalTriggeredBy := vArchivalTriggeredBy||', ROWS_COUNT'; + elsif vTableStat.OVER_ARCH_THRESOLD_SIZE >= vSourceFileConfig.BYTES_SUM_OVER_ARCHIVE_THRESHOLD then vArchivalTriggeredBy := vArchivalTriggeredBy||', BYTES_SUM'; + else ENV_MANAGER.LOG_PROCESS_EVENT('Non of archival triggers reached','INFO'); + end if; + END IF; if LENGTH(vArchivalTriggeredBy)>0 THEN ENV_MANAGER.LOG_PROCESS_EVENT('Archival Triggered By: '||vArchivalTriggeredBy,'INFO');