From 92feb95ae08d5e1d3c192b42bf936208376c0c3e Mon Sep 17 00:00:00 2001 From: Grzegorz Michalski Date: Fri, 20 Mar 2026 13:37:05 +0100 Subject: [PATCH] feat(FILE_ARCHIVER): Enhance documentation with new function details and clarify private functions --- confluence/FILE_ARCHIVER_Guide.md | 31 ++++++++++++++++++++++--------- 1 file changed, 22 insertions(+), 9 deletions(-) diff --git a/confluence/FILE_ARCHIVER_Guide.md b/confluence/FILE_ARCHIVER_Guide.md index 612eb63..a559595 100644 --- a/confluence/FILE_ARCHIVER_Guide.md +++ b/confluence/FILE_ARCHIVER_Guide.md @@ -456,11 +456,22 @@ https://objectstorage.eu-frankfurt-1.oraclecloud.com/n/namespace/b/archive/o/ARC - **Filtering**: Respects `IS_ARCHIVE_ENABLED='Y'` (skips disabled configurations) - **Individual TRASH Policy**: Each table's `IS_KEPT_IN_TRASH` setting applied independently - **Summary Reporting**: Returns counts of Archived/Skipped/Failed tables -- `GET_ARCHIVAL_WHERE_CLAUSE` - Returns WHERE clause based on configured strategy -- `GATHER_TABLE_STAT` - Calculates archival statistics using strategy logic -- `GATHER_TABLE_STAT_ALL(pSourceFileConfigKey, pSourceKey, pGatherAll)` - Batch statistics with 3-level granularity -- `RESTORE_FILE_FROM_TRASH(pSourceFileConfigKey, pSourceKey, pRestoreAll)` - Restore archived files from TRASH -- `PURGE_TRASH_FOLDER(pSourceFileConfigKey, pSourceKey, pPurgeAll)` - Purge TRASH folder with 3-level granularity +- `GATHER_TABLE_STAT(pSourceFileConfigKey)` - Calculates archival statistics using strategy logic +- `GATHER_TABLE_STAT_ALL(pSourceFileConfigKey, pSourceKey, pGatherAll, pOnlyEnabled)` - Batch statistics with 3-level granularity + - `pOnlyEnabled` (DEFAULT TRUE): When TRUE, only processes tables with `IS_ARCHIVE_ENABLED='Y'` +- `RESTORE_FILE_FROM_TRASH(pSourceFileReceivedKey, pSourceFileConfigKey, pRestoreAll)` - Restore archived files from TRASH +- `PURGE_TRASH_FOLDER(pSourceFileReceivedKey, pSourceFileConfigKey, pPurgeAll)` - Purge TRASH folder with 3-level granularity +- `GET_VERSION` / `GET_BUILD_INFO` / `GET_VERSION_HISTORY` - Package version and metadata + +**Function Wrappers (Python Integration)**: + +All key procedures have `FN_*` function overloads returning `PLS_INTEGER` (SQLCODE: 0=success, error code on failure) for Python library integration: +- `FN_ARCHIVE_TABLE_DATA`, `FN_GATHER_TABLE_STAT`, `FN_ARCHIVE_ALL`, `FN_GATHER_TABLE_STAT_ALL` +- `RESTORE_FILE_FROM_TRASH` and `PURGE_TRASH_FOLDER` also have function overloads returning PLS_INTEGER + +**Internal Functions** (not callable externally): +- `GET_ARCHIVAL_WHERE_CLAUSE` - Returns WHERE clause based on configured strategy (private) +- `GET_TABLE_STAT` - Retrieves or auto-generates table statistics (private) **Archival Execution**: ```sql @@ -1072,13 +1083,15 @@ BEGIN WHERE TABLE_ID = 'YOUR_TABLE' AND ROWNUM = 1; - vWhereClause := CT_MRDS.FILE_ARCHIVER.GET_ARCHIVAL_WHERE_CLAUSE(vConfig); - DBMS_OUTPUT.PUT_LINE('WHERE Clause: ' || vWhereClause); + -- Note: GET_ARCHIVAL_WHERE_CLAUSE is a private function. + -- To test WHERE clause logic, check A_PROCESS_LOG entries from ARCHIVE_TABLE_DATA + -- which logs the generated WHERE clause at INFO level. + DBMS_OUTPUT.PUT_LINE('Config: ' || vConfig.ARCHIVAL_STRATEGY || ', MIN_AGE=' || vConfig.MINIMUM_AGE_MONTHS); END; / ``` -#### Issue 3: Package Compilation Errors After Upgrade +#### Issue 7: Package Compilation Errors After Upgrade **Symptoms**: FILE_ARCHIVER package shows INVALID status @@ -1152,7 +1165,7 @@ SELECT COUNT(CASE WHEN SFR.PROCESSING_STATUS = 'INGESTED' THEN 1 END) AS PENDING_ARCHIVE, COUNT(CASE WHEN SFR.PROCESSING_STATUS = 'ARCHIVED_AND_TRASHED' THEN 1 END) AS IN_TRASH, COUNT(CASE WHEN SFR.PROCESSING_STATUS = 'ARCHIVED_AND_PURGED' THEN 1 END) AS PURGED, - MAX(SFR.UPDATED_AT) FILTER (WHERE SFR.PROCESSING_STATUS LIKE 'ARCHIVED%') AS LAST_ARCHIVAL + MAX(CASE WHEN SFR.PROCESSING_STATUS LIKE 'ARCHIVED%' THEN SFR.UPDATED_AT END) AS LAST_ARCHIVAL FROM CT_MRDS.A_SOURCE_FILE_CONFIG SFC LEFT JOIN CT_MRDS.A_SOURCE_FILE_RECEIVED SFR ON SFC.A_SOURCE_FILE_CONFIG_KEY = SFR.A_SOURCE_FILE_CONFIG_KEY WHERE SFC.SOURCE_FILE_TYPE = 'INPUT'