From 577c94f3638ec372a192185be87f4303ee66cb3a Mon Sep 17 00:00:00 2001 From: Grzegorz Michalski Date: Fri, 20 Feb 2026 11:56:41 +0100 Subject: [PATCH] =?UTF-8?q?Zmiana=20nazw=20kolumn=20ARCHIVE=5FENABLED=20?= =?UTF-8?q?=E2=86=92=20IS=5FARCHIVE=5FENABLED=20(konwencja=20boolean)=20KE?= =?UTF-8?q?EP=5FIN=5FTRASH=20=E2=86=92=20IS=5FKEEP=5FIN=5FTRASH=20(konwenc?= =?UTF-8?q?ja=20boolean)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ..._install_add_archival_strategy_columns.sql | 14 +++---- ...06_MARS_828_configure_release01_tables.sql | 40 +++++++++---------- .../MARS-828/94_MARS_828_rollback_columns.sql | 12 +++--- .../MARS-828/install_mars828.sql | 6 +-- .../new_version/A_SOURCE_FILE_CONFIG.sql | 12 +++--- .../MARS-828/new_version/FILE_ARCHIVER.pkb | 36 ++++++++--------- .../MARS-828/new_version/FILE_ARCHIVER.pkg | 18 ++++----- .../MARS-828/rollback_mars828.sql | 2 +- 8 files changed, 70 insertions(+), 70 deletions(-) diff --git a/MARS_Packages/REL01_ADDITIONS/MARS-828/01_MARS_828_install_add_archival_strategy_columns.sql b/MARS_Packages/REL01_ADDITIONS/MARS-828/01_MARS_828_install_add_archival_strategy_columns.sql index 0b45bf1..e34b268 100644 --- a/MARS_Packages/REL01_ADDITIONS/MARS-828/01_MARS_828_install_add_archival_strategy_columns.sql +++ b/MARS_Packages/REL01_ADDITIONS/MARS-828/01_MARS_828_install_add_archival_strategy_columns.sql @@ -11,8 +11,8 @@ PROMPT ======================================== ALTER TABLE CT_MRDS.A_SOURCE_FILE_CONFIG ADD ( ARCHIVAL_STRATEGY VARCHAR2(30) DEFAULT 'THRESHOLD_BASED' NOT NULL, MINIMUM_AGE_MONTHS NUMBER(3) DEFAULT NULL, - ARCHIVE_ENABLED CHAR(1) DEFAULT 'N' NOT NULL, - KEEP_IN_TRASH CHAR(1) DEFAULT 'Y' NOT NULL + IS_ARCHIVE_ENABLED CHAR(1) DEFAULT 'N' NOT NULL, + IS_KEEP_IN_TRASH CHAR(1) DEFAULT 'Y' NOT NULL ); -- Add check constraints @@ -22,10 +22,10 @@ ALTER TABLE CT_MRDS.A_SOURCE_FILE_CONFIG ADD CONSTRAINT ); ALTER TABLE CT_MRDS.A_SOURCE_FILE_CONFIG ADD CONSTRAINT - CHK_ARCHIVE_ENABLED CHECK (ARCHIVE_ENABLED IN ('Y', 'N')); + CHK_IS_ARCHIVE_ENABLED CHECK (IS_ARCHIVE_ENABLED IN ('Y', 'N')); ALTER TABLE CT_MRDS.A_SOURCE_FILE_CONFIG ADD CONSTRAINT - CHK_KEEP_IN_TRASH CHECK (KEEP_IN_TRASH IN ('Y', 'N')); + CHK_IS_KEEP_IN_TRASH CHECK (IS_KEEP_IN_TRASH IN ('Y', 'N')); -- Add comments COMMENT ON COLUMN CT_MRDS.A_SOURCE_FILE_CONFIG.ARCHIVAL_STRATEGY IS @@ -34,10 +34,10 @@ COMMENT ON COLUMN CT_MRDS.A_SOURCE_FILE_CONFIG.ARCHIVAL_STRATEGY IS COMMENT ON COLUMN CT_MRDS.A_SOURCE_FILE_CONFIG.MINIMUM_AGE_MONTHS IS 'Minimum age in months for archival (used with MINIMUM_AGE_MONTHS or HYBRID strategies)'; -COMMENT ON COLUMN CT_MRDS.A_SOURCE_FILE_CONFIG.ARCHIVE_ENABLED IS +COMMENT ON COLUMN CT_MRDS.A_SOURCE_FILE_CONFIG.IS_ARCHIVE_ENABLED IS 'Y=Enable archiving, N=Skip archiving. Controls if table participates in archival process. Added in MARS-828 v3.3.0'; -COMMENT ON COLUMN CT_MRDS.A_SOURCE_FILE_CONFIG.KEEP_IN_TRASH IS +COMMENT ON COLUMN CT_MRDS.A_SOURCE_FILE_CONFIG.IS_KEEP_IN_TRASH IS 'Y=Keep files in TRASH after archiving, N=Delete immediately. Controls TRASH retention policy. Added in MARS-828 v3.3.0'; -- Verify columns added @@ -50,7 +50,7 @@ SELECT FROM all_tab_columns WHERE owner = 'CT_MRDS' AND table_name = 'A_SOURCE_FILE_CONFIG' - AND column_name IN ('ARCHIVAL_STRATEGY', 'MINIMUM_AGE_MONTHS', 'ARCHIVE_ENABLED', 'KEEP_IN_TRASH') + AND column_name IN ('ARCHIVAL_STRATEGY', 'MINIMUM_AGE_MONTHS', 'IS_ARCHIVE_ENABLED', 'IS_KEEP_IN_TRASH') ORDER BY column_id; PROMPT ======================================== diff --git a/MARS_Packages/REL01_ADDITIONS/MARS-828/06_MARS_828_configure_release01_tables.sql b/MARS_Packages/REL01_ADDITIONS/MARS-828/06_MARS_828_configure_release01_tables.sql index a1af3c9..a62455b 100644 --- a/MARS_Packages/REL01_ADDITIONS/MARS-828/06_MARS_828_configure_release01_tables.sql +++ b/MARS_Packages/REL01_ADDITIONS/MARS-828/06_MARS_828_configure_release01_tables.sql @@ -61,8 +61,8 @@ SET ARCHIVAL_STRATEGY = 'MINIMUM_AGE_MONTHS', ROWS_COUNT_OVER_ARCHIVE_THRESHOLD = 100000, BYTES_SUM_OVER_ARCHIVE_THRESHOLD = 1073741824, -- 1 GB HOURS_TO_EXPIRE_STATISTICS = 24, - ARCHIVE_ENABLED = 'Y', -- Enable archival for all LM tables - KEEP_IN_TRASH = 'N' -- Delete files immediately after archival (no TRASH retention) + IS_ARCHIVE_ENABLED = 'Y', -- Enable archival for all LM tables + IS_KEEP_IN_TRASH = 'N' -- Delete files immediately after archival (no TRASH retention) WHERE SOURCE_FILE_TYPE = 'INPUT' AND A_SOURCE_KEY = 'LM' AND TABLE_ID IN ( @@ -107,8 +107,8 @@ SET ARCHIVAL_STRATEGY = 'MINIMUM_AGE_MONTHS', ROWS_COUNT_OVER_ARCHIVE_THRESHOLD = 50000, BYTES_SUM_OVER_ARCHIVE_THRESHOLD = 536870912, -- 512 MB HOURS_TO_EXPIRE_STATISTICS = 48, - ARCHIVE_ENABLED = 'Y', -- Enable archival for CSDB DEBT tables - KEEP_IN_TRASH = 'N' -- Delete files immediately after archival (no TRASH retention) + IS_ARCHIVE_ENABLED = 'Y', -- Enable archival for CSDB DEBT tables + IS_KEEP_IN_TRASH = 'N' -- Delete files immediately after archival (no TRASH retention) WHERE SOURCE_FILE_TYPE = 'INPUT' AND A_SOURCE_KEY = 'CSDB' AND TABLE_ID IN ('CSDB_DEBT', 'CSDB_DEBT_DAILY'); @@ -133,8 +133,8 @@ SET ARCHIVAL_STRATEGY = 'MINIMUM_AGE_MONTHS', ROWS_COUNT_OVER_ARCHIVE_THRESHOLD = 20000, BYTES_SUM_OVER_ARCHIVE_THRESHOLD = 268435456, -- 256 MB HOURS_TO_EXPIRE_STATISTICS = 72, - ARCHIVE_ENABLED = 'Y', -- Enable archival for CSDB rating/description tables - KEEP_IN_TRASH = 'N' -- Delete files immediately after archival (no TRASH retention) + IS_ARCHIVE_ENABLED = 'Y', -- Enable archival for CSDB rating/description tables + IS_KEEP_IN_TRASH = 'N' -- Delete files immediately after archival (no TRASH retention) WHERE SOURCE_FILE_TYPE = 'INPUT' AND A_SOURCE_KEY = 'CSDB' AND TABLE_ID IN ( @@ -174,8 +174,8 @@ SELECT ROWS_COUNT_OVER_ARCHIVE_THRESHOLD AS ROW_THR, BYTES_SUM_OVER_ARCHIVE_THRESHOLD AS BYTE_THR, HOURS_TO_EXPIRE_STATISTICS AS STATS_HRS, - ARCHIVE_ENABLED, - KEEP_IN_TRASH, + IS_ARCHIVE_ENABLED, + IS_KEEP_IN_TRASH, CASE WHEN ARCHIVAL_STRATEGY = 'MINIMUM_AGE_MONTHS' AND MINIMUM_AGE_MONTHS = 0 @@ -183,8 +183,8 @@ SELECT AND ROWS_COUNT_OVER_ARCHIVE_THRESHOLD = 100000 AND BYTES_SUM_OVER_ARCHIVE_THRESHOLD = 1073741824 AND HOURS_TO_EXPIRE_STATISTICS = 24 - AND ARCHIVE_ENABLED = 'Y' - AND KEEP_IN_TRASH = 'N' + AND IS_ARCHIVE_ENABLED = 'Y' + AND IS_KEEP_IN_TRASH = 'N' THEN 'OK' ELSE 'ERROR' END AS STATUS @@ -206,8 +206,8 @@ SELECT ROWS_COUNT_OVER_ARCHIVE_THRESHOLD AS ROW_THR, BYTES_SUM_OVER_ARCHIVE_THRESHOLD AS BYTE_THR, HOURS_TO_EXPIRE_STATISTICS AS STATS_HRS, - ARCHIVE_ENABLED, - KEEP_IN_TRASH, + IS_ARCHIVE_ENABLED, + IS_KEEP_IN_TRASH, CASE WHEN ARCHIVAL_STRATEGY = 'MINIMUM_AGE_MONTHS' AND MINIMUM_AGE_MONTHS = 6 @@ -215,8 +215,8 @@ SELECT AND ROWS_COUNT_OVER_ARCHIVE_THRESHOLD = 50000 AND BYTES_SUM_OVER_ARCHIVE_THRESHOLD = 536870912 AND HOURS_TO_EXPIRE_STATISTICS = 48 - AND ARCHIVE_ENABLED = 'Y' - AND KEEP_IN_TRASH = 'N' + AND IS_ARCHIVE_ENABLED = 'Y' + AND IS_KEEP_IN_TRASH = 'N' THEN 'OK' ELSE 'ERROR' END AS STATUS @@ -238,8 +238,8 @@ SELECT ROWS_COUNT_OVER_ARCHIVE_THRESHOLD AS ROW_THR, BYTES_SUM_OVER_ARCHIVE_THRESHOLD AS BYTE_THR, HOURS_TO_EXPIRE_STATISTICS AS STATS_HRS, - ARCHIVE_ENABLED, - KEEP_IN_TRASH, + IS_ARCHIVE_ENABLED, + IS_KEEP_IN_TRASH, CASE WHEN ARCHIVAL_STRATEGY = 'MINIMUM_AGE_MONTHS' AND MINIMUM_AGE_MONTHS = 0 @@ -247,8 +247,8 @@ SELECT AND ROWS_COUNT_OVER_ARCHIVE_THRESHOLD = 20000 AND BYTES_SUM_OVER_ARCHIVE_THRESHOLD = 268435456 AND HOURS_TO_EXPIRE_STATISTICS = 72 - AND ARCHIVE_ENABLED = 'Y' - AND KEEP_IN_TRASH = 'N' + AND IS_ARCHIVE_ENABLED = 'Y' + AND IS_KEEP_IN_TRASH = 'N' THEN 'OK' ELSE 'ERROR' END AS STATUS @@ -271,8 +271,8 @@ SELECT SUM(CASE WHEN ROWS_COUNT_OVER_ARCHIVE_THRESHOLD IS NOT NULL THEN 1 ELSE 0 END) AS WITH_ROWS_THRESHOLD, SUM(CASE WHEN BYTES_SUM_OVER_ARCHIVE_THRESHOLD IS NOT NULL THEN 1 ELSE 0 END) AS WITH_BYTES_THRESHOLD, SUM(CASE WHEN HOURS_TO_EXPIRE_STATISTICS IS NOT NULL THEN 1 ELSE 0 END) AS WITH_STATS_EXPIRY, - SUM(CASE WHEN ARCHIVE_ENABLED = 'Y' THEN 1 ELSE 0 END) AS ARCHIVAL_ENABLED, - SUM(CASE WHEN KEEP_IN_TRASH = 'N' THEN 1 ELSE 0 END) AS IMMEDIATE_DELETE + SUM(CASE WHEN IS_ARCHIVE_ENABLED = 'Y' THEN 1 ELSE 0 END) AS ARCHIVAL_ENABLED, + SUM(CASE WHEN IS_KEEP_IN_TRASH = 'N' THEN 1 ELSE 0 END) AS IMMEDIATE_DELETE FROM CT_MRDS.A_SOURCE_FILE_CONFIG WHERE SOURCE_FILE_TYPE = 'INPUT' AND ((A_SOURCE_KEY = 'LM' AND TABLE_ID LIKE 'LM_%') diff --git a/MARS_Packages/REL01_ADDITIONS/MARS-828/94_MARS_828_rollback_columns.sql b/MARS_Packages/REL01_ADDITIONS/MARS-828/94_MARS_828_rollback_columns.sql index 6e17191..3f431b8 100644 --- a/MARS_Packages/REL01_ADDITIONS/MARS-828/94_MARS_828_rollback_columns.sql +++ b/MARS_Packages/REL01_ADDITIONS/MARS-828/94_MARS_828_rollback_columns.sql @@ -1,7 +1,7 @@ -- MARS-828: Rollback archival strategy columns -- Author: Grzegorz Michalski -- Date: 2026-01-27 --- Description: Remove ARCHIVAL_STRATEGY, MINIMUM_AGE_MONTHS, ARCHIVE_ENABLED, and KEEP_IN_TRASH columns +-- Description: Remove ARCHIVAL_STRATEGY, MINIMUM_AGE_MONTHS, IS_ARCHIVE_ENABLED, and IS_KEEP_IN_TRASH columns PROMPT ======================================== PROMPT MARS-828: Removing archival strategy and config columns @@ -12,17 +12,17 @@ ALTER TABLE CT_MRDS.A_SOURCE_FILE_CONFIG DROP CONSTRAINT CHK_ARCHIVAL_STRATEGY; ALTER TABLE CT_MRDS.A_SOURCE_FILE_CONFIG -DROP CONSTRAINT CHK_ARCHIVE_ENABLED; +DROP CONSTRAINT CHK_IS_ARCHIVE_ENABLED; ALTER TABLE CT_MRDS.A_SOURCE_FILE_CONFIG -DROP CONSTRAINT CHK_KEEP_IN_TRASH; +DROP CONSTRAINT CHK_IS_KEEP_IN_TRASH; -- Drop columns ALTER TABLE CT_MRDS.A_SOURCE_FILE_CONFIG DROP ( ARCHIVAL_STRATEGY, MINIMUM_AGE_MONTHS, - ARCHIVE_ENABLED, - KEEP_IN_TRASH + IS_ARCHIVE_ENABLED, + IS_KEEP_IN_TRASH ); -- Verify columns dropped @@ -31,7 +31,7 @@ SELECT FROM all_tab_columns WHERE owner = 'CT_MRDS' AND table_name = 'A_SOURCE_FILE_CONFIG' - AND column_name IN ('ARCHIVAL_STRATEGY', 'MINIMUM_AGE_MONTHS', 'ARCHIVE_ENABLED', 'KEEP_IN_TRASH'); + AND column_name IN ('ARCHIVAL_STRATEGY', 'MINIMUM_AGE_MONTHS', 'IS_ARCHIVE_ENABLED', 'IS_KEEP_IN_TRASH'); PROMPT ======================================== PROMPT Archival strategy and config columns removed successfully diff --git a/MARS_Packages/REL01_ADDITIONS/MARS-828/install_mars828.sql b/MARS_Packages/REL01_ADDITIONS/MARS-828/install_mars828.sql index 5635e34..6ec12e3 100644 --- a/MARS_Packages/REL01_ADDITIONS/MARS-828/install_mars828.sql +++ b/MARS_Packages/REL01_ADDITIONS/MARS-828/install_mars828.sql @@ -116,9 +116,9 @@ PROMPT Installation Summary: PROMPT - Package: CT_MRDS.FILE_ARCHIVER PROMPT - Version: 3.3.0 (includes selective archiving and config-based TRASH policy) PROMPT - Strategies: THRESHOLD_BASED (default), MINIMUM_AGE_MONTHS (0=current month), HYBRID -PROMPT - Selective Archiving: ARCHIVE_ENABLED column (Y=archive, N=skip) -PROMPT - TRASH Policy: KEEP_IN_TRASH column (Y=keep files, N=delete immediately) -PROMPT * Default: ARCHIVE_ENABLED='Y', KEEP_IN_TRASH='N' (archiving enabled, immediate deletion) +PROMPT - Selective Archiving: IS_ARCHIVE_ENABLED column (Y=archive, N=skip) +PROMPT - TRASH Policy: IS_KEEP_IN_TRASH column (Y=keep files, N=delete immediately) +PROMPT * Default: IS_ARCHIVE_ENABLED='Y', IS_KEEP_IN_TRASH='N' (archiving enabled, immediate deletion) PROMPT * TRASH is a subfolder in DATA bucket (e.g., TRASH/LM/TABLE_NAME) PROMPT * No more pKeepInTrash parameter - policy from config only PROMPT - New Procedure: ARCHIVE_ALL_FOR_SOURCE(pSourceKey) for batch processing diff --git a/MARS_Packages/REL01_ADDITIONS/MARS-828/new_version/A_SOURCE_FILE_CONFIG.sql b/MARS_Packages/REL01_ADDITIONS/MARS-828/new_version/A_SOURCE_FILE_CONFIG.sql index 0aedf80..03f51ff 100644 --- a/MARS_Packages/REL01_ADDITIONS/MARS-828/new_version/A_SOURCE_FILE_CONFIG.sql +++ b/MARS_Packages/REL01_ADDITIONS/MARS-828/new_version/A_SOURCE_FILE_CONFIG.sql @@ -25,11 +25,11 @@ CREATE TABLE CT_MRDS.A_SOURCE_FILE_CONFIG ( ARCHIVAL_STRATEGY VARCHAR2(50), MINIMUM_AGE_MONTHS NUMBER(3,0), ENCODING VARCHAR2(50) DEFAULT 'UTF8', - ARCHIVE_ENABLED CHAR(1) DEFAULT 'N' NOT NULL, - KEEP_IN_TRASH CHAR(1) DEFAULT 'N' NOT NULL, + IS_ARCHIVE_ENABLED CHAR(1) DEFAULT 'N' NOT NULL, + IS_KEEP_IN_TRASH CHAR(1) DEFAULT 'N' NOT NULL, CONSTRAINT A_SOURCE_FILE_CONFIG_PK PRIMARY KEY (A_SOURCE_FILE_CONFIG_KEY), - CONSTRAINT CHK_ARCHIVE_ENABLED CHECK (ARCHIVE_ENABLED IN ('Y', 'N')), - CONSTRAINT CHK_KEEP_IN_TRASH CHECK (KEEP_IN_TRASH IN ('Y', 'N')), + CONSTRAINT CHK_IS_ARCHIVE_ENABLED CHECK (IS_ARCHIVE_ENABLED IN ('Y', 'N')), + CONSTRAINT CHK_IS_KEEP_IN_TRASH CHECK (IS_KEEP_IN_TRASH IN ('Y', 'N')), CONSTRAINT SOURCE_FILE_TYPE_CHK CHECK (SOURCE_FILE_TYPE IN ('INPUT', 'CONTAINER', 'LOAD_CONFIG')), CONSTRAINT ASFC_A_SOURCE_KEY_FK FOREIGN KEY(A_SOURCE_KEY) REFERENCES CT_MRDS.A_SOURCE(A_SOURCE_KEY), CONSTRAINT ASFC_CONTAINER_FILE_KEY_FK FOREIGN KEY(CONTAINER_FILE_KEY) REFERENCES CT_MRDS.A_SOURCE_FILE_CONFIG(A_SOURCE_FILE_CONFIG_KEY), @@ -50,7 +50,7 @@ TABLESPACE "DATA"; COMMENT ON COLUMN CT_MRDS.A_SOURCE_FILE_CONFIG.ARCHIVAL_STRATEGY IS 'Archival strategy: THRESHOLD_BASED, CURRENT_MONTH_ONLY, MINIMUM_AGE_MONTHS, HYBRID. Added in MARS-828'; COMMENT ON COLUMN CT_MRDS.A_SOURCE_FILE_CONFIG.MINIMUM_AGE_MONTHS IS 'Minimum age in months before archival (required for MINIMUM_AGE_MONTHS strategy). Added in MARS-828'; COMMENT ON COLUMN CT_MRDS.A_SOURCE_FILE_CONFIG.ENCODING IS 'Oracle character set name for CSV files (e.g., UTF8, WE8MSWIN1252, EE8ISO8859P2). Added in MARS-1049'; -COMMENT ON COLUMN CT_MRDS.A_SOURCE_FILE_CONFIG.ARCHIVE_ENABLED IS 'Y=Enable archiving, N=Skip archiving. Controls if table participates in archival process. Added in MARS-828 v3.3.0'; -COMMENT ON COLUMN CT_MRDS.A_SOURCE_FILE_CONFIG.KEEP_IN_TRASH IS 'Y=Keep files in TRASH after archiving, N=Delete immediately. Controls TRASH retention policy. Added in MARS-828 v3.3.0'; +COMMENT ON COLUMN CT_MRDS.A_SOURCE_FILE_CONFIG.IS_ARCHIVE_ENABLED IS 'Y=Enable archiving, N=Skip archiving. Controls if table participates in archival process. Added in MARS-828 v3.3.0'; +COMMENT ON COLUMN CT_MRDS.A_SOURCE_FILE_CONFIG.IS_KEEP_IN_TRASH IS 'Y=Keep files in TRASH after archiving, N=Delete immediately. Controls TRASH retention policy. Added in MARS-828 v3.3.0'; GRANT SELECT, INSERT, UPDATE, DELETE ON CT_MRDS.A_SOURCE_FILE_CONFIG TO MRDS_LOADER_ROLE; \ No newline at end of file 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 867042f..425b4dc 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 @@ -113,15 +113,15 @@ AS vSourceFileConfig := CT_MRDS.FILE_MANAGER.GET_SOURCE_FILE_CONFIG(pSourceFileConfigKey => pSourceFileConfigKey); -- Check if archiving is enabled for this configuration - IF vSourceFileConfig.ARCHIVE_ENABLED = 'N' THEN - CT_MRDS.ENV_MANAGER.LOG_PROCESS_EVENT('Archiving disabled for this configuration (ARCHIVE_ENABLED=N). Skipping.', 'WARNING', vParameters); + IF vSourceFileConfig.IS_ARCHIVE_ENABLED = 'N' THEN + CT_MRDS.ENV_MANAGER.LOG_PROCESS_EVENT('Archiving disabled for this configuration (IS_ARCHIVE_ENABLED=N). Skipping.', 'WARNING', vParameters); CT_MRDS.ENV_MANAGER.LOG_PROCESS_EVENT('End','INFO',vParameters); RETURN; END IF; -- Get TRASH policy from configuration - vKeepInTrash := (vSourceFileConfig.KEEP_IN_TRASH = 'Y'); - CT_MRDS.ENV_MANAGER.LOG_PROCESS_EVENT('TRASH policy from config: KEEP_IN_TRASH=' || vSourceFileConfig.KEEP_IN_TRASH, 'INFO', vParameters); + vKeepInTrash := (vSourceFileConfig.IS_KEEP_IN_TRASH = 'Y'); + CT_MRDS.ENV_MANAGER.LOG_PROCESS_EVENT('TRASH policy from config: IS_KEEP_IN_TRASH=' || vSourceFileConfig.IS_KEEP_IN_TRASH, 'INFO', vParameters); vTableStat := GET_TABLE_STAT(pSourceFileConfigKey => pSourceFileConfigKey); @@ -296,10 +296,10 @@ AS AND r.source_file_name = f.filename AND r.PROCESSING_STATUS = 'ARCHIVED_AND_TRASHED'; END LOOP; - CT_MRDS.ENV_MANAGER.LOG_PROCESS_EVENT('All archived files removed from TRASH folder and marked as ARCHIVED_AND_PURGED (config: KEEP_IN_TRASH=N).','INFO'); + CT_MRDS.ENV_MANAGER.LOG_PROCESS_EVENT('All archived files removed from TRASH folder and marked as ARCHIVED_AND_PURGED (config: IS_KEEP_IN_TRASH=N).','INFO'); ELSE -- Keep files in TRASH folder (status remains ARCHIVED_AND_TRASHED) - CT_MRDS.ENV_MANAGER.LOG_PROCESS_EVENT('Archived files kept in TRASH folder for retention (config: KEEP_IN_TRASH=Y, status: ARCHIVED_AND_TRASHED).','INFO'); + CT_MRDS.ENV_MANAGER.LOG_PROCESS_EVENT('Archived files kept in TRASH folder for retention (config: IS_KEEP_IN_TRASH=Y, status: ARCHIVED_AND_TRASHED).','INFO'); END IF; --ROLLBACK PART @@ -1041,8 +1041,8 @@ AS SELECT A_SOURCE_FILE_CONFIG_KEY, TABLE_ID, - ARCHIVE_ENABLED, - KEEP_IN_TRASH, + IS_ARCHIVE_ENABLED, + IS_KEEP_IN_TRASH, A_SOURCE_KEY FROM CT_MRDS.A_SOURCE_FILE_CONFIG WHERE SOURCE_FILE_TYPE = 'INPUT' @@ -1058,16 +1058,16 @@ AS ) ORDER BY A_SOURCE_KEY, A_SOURCE_FILE_CONFIG_KEY ) LOOP - IF config_rec.ARCHIVE_ENABLED = 'N' THEN + IF config_rec.IS_ARCHIVE_ENABLED = 'N' THEN CT_MRDS.ENV_MANAGER.LOG_PROCESS_EVENT( - 'Skipping table ' || config_rec.TABLE_ID || ' (ARCHIVE_ENABLED=N) [Source: ' || config_rec.A_SOURCE_KEY || ', Config: ' || config_rec.A_SOURCE_FILE_CONFIG_KEY || ']', + 'Skipping table ' || config_rec.TABLE_ID || ' (IS_ARCHIVE_ENABLED=N) [Source: ' || config_rec.A_SOURCE_KEY || ', Config: ' || config_rec.A_SOURCE_FILE_CONFIG_KEY || ']', 'INFO' ); vTablesSkipped := vTablesSkipped + 1; ELSE BEGIN CT_MRDS.ENV_MANAGER.LOG_PROCESS_EVENT( - 'Archiving table ' || config_rec.TABLE_ID || ' [Source: ' || config_rec.A_SOURCE_KEY || ', Config: ' || config_rec.A_SOURCE_FILE_CONFIG_KEY || ', KEEP_IN_TRASH=' || config_rec.KEEP_IN_TRASH || ']', + 'Archiving table ' || config_rec.TABLE_ID || ' [Source: ' || config_rec.A_SOURCE_KEY || ', Config: ' || config_rec.A_SOURCE_FILE_CONFIG_KEY || ', IS_KEEP_IN_TRASH=' || config_rec.IS_KEEP_IN_TRASH || ']', 'INFO' ); @@ -1174,14 +1174,14 @@ AS END IF; -- Set enabled filter info - vEnabledFilter := CASE WHEN pOnlyEnabled THEN 'ARCHIVE_ENABLED=Y only' ELSE 'All tables' END; + vEnabledFilter := CASE WHEN pOnlyEnabled THEN 'IS_ARCHIVE_ENABLED=Y only' ELSE 'All tables' END; CT_MRDS.ENV_MANAGER.LOG_PROCESS_EVENT('Filter mode: ' || vEnabledFilter, 'INFO'); FOR config_rec IN ( SELECT A_SOURCE_FILE_CONFIG_KEY, TABLE_ID, - ARCHIVE_ENABLED, + IS_ARCHIVE_ENABLED, A_SOURCE_KEY FROM CT_MRDS.A_SOURCE_FILE_CONFIG WHERE SOURCE_FILE_TYPE = 'INPUT' @@ -1195,20 +1195,20 @@ AS -- Level 3: All configs when pGatherAll = TRUE (pSourceFileConfigKey IS NULL AND pSourceKey IS NULL AND pGatherAll = TRUE) ) - -- Apply ARCHIVE_ENABLED filter if pOnlyEnabled = TRUE - AND (pOnlyEnabled = FALSE OR ARCHIVE_ENABLED = 'Y') + -- Apply IS_ARCHIVE_ENABLED filter if pOnlyEnabled = TRUE + AND (pOnlyEnabled = FALSE OR IS_ARCHIVE_ENABLED = 'Y') ORDER BY A_SOURCE_KEY, A_SOURCE_FILE_CONFIG_KEY ) LOOP - IF pOnlyEnabled AND config_rec.ARCHIVE_ENABLED = 'N' THEN + IF pOnlyEnabled AND config_rec.IS_ARCHIVE_ENABLED = 'N' THEN CT_MRDS.ENV_MANAGER.LOG_PROCESS_EVENT( - 'Skipping table ' || config_rec.TABLE_ID || ' (ARCHIVE_ENABLED=N) [Source: ' || config_rec.A_SOURCE_KEY || ', Config: ' || config_rec.A_SOURCE_FILE_CONFIG_KEY || ']', + 'Skipping table ' || config_rec.TABLE_ID || ' (IS_ARCHIVE_ENABLED=N) [Source: ' || config_rec.A_SOURCE_KEY || ', Config: ' || config_rec.A_SOURCE_FILE_CONFIG_KEY || ']', 'INFO' ); vTablesSkipped := vTablesSkipped + 1; ELSE BEGIN CT_MRDS.ENV_MANAGER.LOG_PROCESS_EVENT( - 'Gathering statistics for table ' || config_rec.TABLE_ID || ' [Source: ' || config_rec.A_SOURCE_KEY || ', Config: ' || config_rec.A_SOURCE_FILE_CONFIG_KEY || ', ARCHIVE_ENABLED=' || config_rec.ARCHIVE_ENABLED || ']', + 'Gathering statistics for table ' || config_rec.TABLE_ID || ' [Source: ' || config_rec.A_SOURCE_KEY || ', Config: ' || config_rec.A_SOURCE_FILE_CONFIG_KEY || ', IS_ARCHIVE_ENABLED=' || config_rec.IS_ARCHIVE_ENABLED || ']', 'INFO' ); diff --git a/MARS_Packages/REL01_ADDITIONS/MARS-828/new_version/FILE_ARCHIVER.pkg b/MARS_Packages/REL01_ADDITIONS/MARS-828/new_version/FILE_ARCHIVER.pkg index febbf3e..8b14196 100644 --- a/MARS_Packages/REL01_ADDITIONS/MARS-828/new_version/FILE_ARCHIVER.pkg +++ b/MARS_Packages/REL01_ADDITIONS/MARS-828/new_version/FILE_ARCHIVER.pkg @@ -23,7 +23,7 @@ AS -- Version History (Latest changes first) VERSION_HISTORY CONSTANT VARCHAR2(4000) := - '3.3.0 (2026-02-11): Added ARCHIVE_ENABLED and KEEP_IN_TRASH columns to A_SOURCE_FILE_CONFIG for selective archiving and config-based TRASH policy. Removed pKeepInTrash parameter (now from config). Added ARCHIVE_ALL batch procedure with 3-level granularity (config/source/all). Added GATHER_TABLE_STAT_ALL batch statistics procedure with 3-level granularity. Added RESTORE_FILE_FROM_TRASH and PURGE_TRASH_FOLDER with 3-level granularity' || CHR(13)||CHR(10) || + '3.3.0 (2026-02-11): Added IS_ARCHIVE_ENABLED and IS_KEEP_IN_TRASH columns to A_SOURCE_FILE_CONFIG for selective archiving and config-based TRASH policy. Removed pKeepInTrash parameter (now from config). Added ARCHIVE_ALL batch procedure with 3-level granularity (config/source/all). Added GATHER_TABLE_STAT_ALL batch statistics procedure with 3-level granularity. Added RESTORE_FILE_FROM_TRASH and PURGE_TRASH_FOLDER with 3-level granularity' || CHR(13)||CHR(10) || '3.2.1 (2026-02-10): Fixed status update - ARCHIVED → ARCHIVED_AND_TRASHED when moving files to TRASH folder (critical bug fix)' || CHR(13)||CHR(10) || '3.2.0 (2026-02-06): Added pKeepInTrash parameter (DEFAULT TRUE) to ARCHIVE_TABLE_DATA for TRASH folder retention control - files kept in TRASH subfolder (DATA bucket) by default for safety and compliance' || CHR(13)||CHR(10) || '3.1.2 (2026-02-06): Fixed missing PARTITION_YEAR/PARTITION_MONTH assignments in UPDATE statement and export query circular dependency (now filters by workflow_start instead of partition fields)' || CHR(13)||CHR(10) || @@ -51,7 +51,7 @@ AS * @desc Wrapper procedure for DBMS_CLOUD.EXPORT_DATA. * Exports data from table specified by pSourceFileConfigKey(A_SOURCE_FILE_CONFIG.A_SOURCE_FILE_CONFIG_KEY) into PARQUET file on OCI infrustructure. * Each YEAR_MONTH pair goes to seperate file (implicit partitioning). - * TRASH policy is controlled by A_SOURCE_FILE_CONFIG.KEEP_IN_TRASH column ('Y'=keep in TRASH, 'N'=delete immediately). + * TRASH policy is controlled by A_SOURCE_FILE_CONFIG.IS_KEEP_IN_TRASH column ('Y'=keep in TRASH, 'N'=delete immediately). **/ PROCEDURE ARCHIVE_TABLE_DATA ( pSourceFileConfigKey IN CT_MRDS.A_SOURCE_FILE_CONFIG.A_SOURCE_FILE_CONFIG_KEY%TYPE @@ -62,7 +62,7 @@ AS * @desc Function wrapper for ARCHIVE_TABLE_DATA procedure. * Returns SQLCODE for Python library integration. * Calls the main ARCHIVE_TABLE_DATA procedure and captures execution result. - * TRASH policy is controlled by A_SOURCE_FILE_CONFIG.KEEP_IN_TRASH column ('Y'=keep in TRASH, 'N'=delete immediately). + * TRASH policy is controlled by A_SOURCE_FILE_CONFIG.IS_KEEP_IN_TRASH column ('Y'=keep in TRASH, 'N'=delete immediately). * @example SELECT FILE_ARCHIVER.FN_ARCHIVE_TABLE_DATA(pSourceFileConfigKey => 123) FROM DUAL; * @ex_rslt 0 (success) or error code **/ @@ -96,16 +96,16 @@ AS /** * @name GATHER_TABLE_STAT_ALL * @desc Multi-level batch statistics gathering procedure with three granularity levels. - * Processes configurations based on ARCHIVE_ENABLED setting (when pOnlyEnabled=TRUE). + * Processes configurations based on IS_ARCHIVE_ENABLED setting (when pOnlyEnabled=TRUE). * Gathers statistics for external tables and inserts data into A_TABLE_STAT and A_TABLE_STAT_HIST. * @param pSourceFileConfigKey - (LEVEL 1) Gather stats for specific configuration key (highest priority) * @param pSourceKey - (LEVEL 2) Gather stats for all tables in source system (e.g., 'LM', 'C2D') (medium priority) * @param pGatherAll - (LEVEL 3) When TRUE, gather stats for ALL tables across all sources (lowest priority) - * @param pOnlyEnabled - When TRUE (default), only process tables with ARCHIVE_ENABLED='Y' + * @param pOnlyEnabled - When TRUE (default), only process tables with IS_ARCHIVE_ENABLED='Y' * @example -- Level 1: CALL FILE_ARCHIVER.GATHER_TABLE_STAT_ALL(pSourceFileConfigKey => 123); * @example -- Level 2: CALL FILE_ARCHIVER.GATHER_TABLE_STAT_ALL(pSourceKey => 'LM'); * @example -- Level 3: CALL FILE_ARCHIVER.GATHER_TABLE_STAT_ALL(pGatherAll => TRUE); - * @example -- All tables regardless of ARCHIVE_ENABLED: CALL FILE_ARCHIVER.GATHER_TABLE_STAT_ALL(pGatherAll => TRUE, pOnlyEnabled => FALSE); + * @example -- All tables regardless of IS_ARCHIVE_ENABLED: CALL FILE_ARCHIVER.GATHER_TABLE_STAT_ALL(pGatherAll => TRUE, pOnlyEnabled => FALSE); **/ PROCEDURE GATHER_TABLE_STAT_ALL ( pSourceFileConfigKey IN CT_MRDS.A_SOURCE_FILE_CONFIG.A_SOURCE_FILE_CONFIG_KEY%TYPE DEFAULT NULL, @@ -122,7 +122,7 @@ AS * @param pSourceFileConfigKey - (LEVEL 1) Gather stats for specific configuration key (highest priority) * @param pSourceKey - (LEVEL 2) Gather stats for all tables in source system (medium priority) * @param pGatherAll - (LEVEL 3) When TRUE, gather stats for ALL tables across all sources (lowest priority) - * @param pOnlyEnabled - When TRUE (default), only process tables with ARCHIVE_ENABLED='Y' + * @param pOnlyEnabled - When TRUE (default), only process tables with IS_ARCHIVE_ENABLED='Y' * @example SELECT FILE_ARCHIVER.FN_GATHER_TABLE_STAT_ALL(pSourceKey => 'LM') FROM DUAL; * @ex_rslt 0 (success) or error code **/ @@ -136,8 +136,8 @@ AS /** * @name ARCHIVE_ALL * @desc Multi-level batch archival procedure with three granularity levels. - * Only processes configurations where ARCHIVE_ENABLED='Y'. - * TRASH policy for each table is controlled by individual KEEP_IN_TRASH column. + * Only processes configurations where IS_ARCHIVE_ENABLED='Y'. + * TRASH policy for each table is controlled by individual IS_KEEP_IN_TRASH column. * @param pSourceFileConfigKey - (LEVEL 1) Archive specific configuration key (highest priority) * @param pSourceKey - (LEVEL 2) Archive all enabled tables for source system (e.g., 'LM', 'C2D') (medium priority) * @param pArchiveAll - (LEVEL 3) When TRUE, archive ALL enabled tables across all sources (lowest priority) diff --git a/MARS_Packages/REL01_ADDITIONS/MARS-828/rollback_mars828.sql b/MARS_Packages/REL01_ADDITIONS/MARS-828/rollback_mars828.sql index b99e142..39a2e4f 100644 --- a/MARS_Packages/REL01_ADDITIONS/MARS-828/rollback_mars828.sql +++ b/MARS_Packages/REL01_ADDITIONS/MARS-828/rollback_mars828.sql @@ -35,7 +35,7 @@ PROMPT Rollback steps: PROMPT 1. Rollback TRASH retention statuses PROMPT 2. Revoke T_FILENAME privileges PROMPT 3. Remove validation trigger -PROMPT 4. Drop all configuration columns (ARCHIVAL_STRATEGY, MINIMUM_AGE_MONTHS, ARCHIVE_ENABLED, KEEP_IN_TRASH) +PROMPT 4. Drop all configuration columns (ARCHIVAL_STRATEGY, MINIMUM_AGE_MONTHS, IS_ARCHIVE_ENABLED, IS_KEEP_IN_TRASH) PROMPT 5. Restore FILE_ARCHIVER package to v2.0.0 PROMPT 6. Revert all archival strategies to THRESHOLD_BASED PROMPT