Files
mars/MARS_Packages/REL01_ADDITIONS/MARS-828/test/final_summary.sql
2026-02-02 11:18:42 +01:00

260 lines
9.8 KiB
MySQL

-- ===================================================================
-- MARS-828: Final Summary Report
-- ===================================================================
-- Purpose: Complete status of MARS-828 implementation
-- Author: Grzegorz Michalski
-- Date: 2026-01-28
-- ===================================================================
SET SERVEROUTPUT ON SIZE UNLIMITED
SET LINESIZE 200
SET PAGESIZE 2000
PROMPT
PROMPT ================================================================
PROMPT MARS-828: FINAL IMPLEMENTATION SUMMARY REPORT
PROMPT ================================================================
PROMPT
-- 1. Package Status
PROMPT 1. PACKAGE STATUS
PROMPT ================================================================
SELECT
object_name,
object_type,
status,
TO_CHAR(last_ddl_time, 'YYYY-MM-DD HH24:MI:SS') as last_modified
FROM all_objects
WHERE owner = 'CT_MRDS'
AND object_name = 'FILE_ARCHIVER'
AND object_type IN ('PACKAGE', 'PACKAGE BODY')
ORDER BY object_type;
SELECT
'Version: ' || CT_MRDS.FILE_ARCHIVER.GET_VERSION() AS info
FROM DUAL
UNION ALL
SELECT
'Build Date: ' || SUBSTR(CT_MRDS.FILE_ARCHIVER.GET_BUILD_INFO(),
INSTR(CT_MRDS.FILE_ARCHIVER.GET_BUILD_INFO(), 'Build Date:') + 12, 19)
FROM DUAL;
-- 2. Package Version Tracking
PROMPT
PROMPT 2. PACKAGE VERSION TRACKING
PROMPT ================================================================
SELECT
PACKAGE_NAME,
PACKAGE_VERSION,
PACKAGE_BUILD_DATE,
TO_CHAR(TRACKING_DATE, 'YYYY-MM-DD HH24:MI:SS') AS tracked_on,
CT_MRDS.ENV_MANAGER.CHECK_PACKAGE_CHANGES(PACKAGE_OWNER, PACKAGE_NAME) AS status
FROM CT_MRDS.A_PACKAGE_VERSION_TRACKING
WHERE PACKAGE_OWNER = 'CT_MRDS'
AND PACKAGE_NAME = 'FILE_ARCHIVER'
ORDER BY TRACKING_DATE DESC
FETCH FIRST 1 ROW ONLY;
-- 3. Database Schema Changes
PROMPT
PROMPT 3. DATABASE SCHEMA CHANGES
PROMPT ================================================================
PROMPT New columns in A_SOURCE_FILE_CONFIG:
SELECT
column_name,
data_type ||
CASE
WHEN data_type = 'VARCHAR2' THEN '(' || data_length || ')'
WHEN data_type = 'NUMBER' THEN '(' || NVL(TO_CHAR(data_precision), '*') ||
CASE WHEN data_scale IS NOT NULL THEN ',' || data_scale END || ')'
ELSE ''
END AS data_type,
nullable,
data_default
FROM all_tab_columns
WHERE owner = 'CT_MRDS'
AND table_name = 'A_SOURCE_FILE_CONFIG'
AND column_name IN ('ARCHIVAL_STRATEGY', 'MINIMUM_AGE_MONTHS')
ORDER BY column_name;
PROMPT
PROMPT Constraints:
SELECT
constraint_name,
constraint_type,
search_condition
FROM all_constraints
WHERE owner = 'CT_MRDS'
AND table_name = 'A_SOURCE_FILE_CONFIG'
AND constraint_name = 'CHK_ARCHIVAL_STRATEGY';
PROMPT
PROMPT Triggers:
SELECT
trigger_name,
status,
trigger_type,
triggering_event
FROM all_triggers
WHERE owner = 'CT_MRDS'
AND trigger_name = 'TRG_BI_A_SRC_FILE_CFG_ARCH_VAL';
-- 4. Archival Strategy Distribution
PROMPT
PROMPT 4. ARCHIVAL STRATEGY DISTRIBUTION
PROMPT ================================================================
SELECT
ARCHIVAL_STRATEGY,
COUNT(*) AS config_count,
ROUND(COUNT(*) * 100.0 / SUM(COUNT(*)) OVER (), 2) AS percentage
FROM CT_MRDS.A_SOURCE_FILE_CONFIG
WHERE SOURCE_FILE_TYPE = 'INPUT'
GROUP BY ARCHIVAL_STRATEGY
ORDER BY config_count DESC;
-- 5. Strategy Examples by Source
PROMPT
PROMPT 5. STRATEGY EXAMPLES BY SOURCE
PROMPT ================================================================
SELECT
A_SOURCE_KEY AS source,
ARCHIVAL_STRATEGY AS strategy,
MINIMUM_AGE_MONTHS AS min_age,
DAYS_FOR_ARCHIVE_THRESHOLD AS threshold_days,
COUNT(*) AS tables
FROM CT_MRDS.A_SOURCE_FILE_CONFIG
WHERE SOURCE_FILE_TYPE = 'INPUT'
GROUP BY A_SOURCE_KEY, ARCHIVAL_STRATEGY, MINIMUM_AGE_MONTHS, DAYS_FOR_ARCHIVE_THRESHOLD
HAVING A_SOURCE_KEY IN ('C2D', 'LM', 'CSDB', 'TOP', 'CEPH', 'TMS')
ORDER BY A_SOURCE_KEY, ARCHIVAL_STRATEGY;
-- 6. CSDB Configuration (Special Case - 6 months retention)
PROMPT
PROMPT 6. CSDB DEBT CONFIGURATION (6-Month Retention Requirement)
PROMPT ================================================================
SELECT
SOURCE_FILE_ID,
TABLE_ID,
ARCHIVAL_STRATEGY,
MINIMUM_AGE_MONTHS,
'Retains data for ' || MINIMUM_AGE_MONTHS || ' months before archival' AS retention_policy
FROM CT_MRDS.A_SOURCE_FILE_CONFIG
WHERE A_SOURCE_KEY = 'CSDB'
AND SOURCE_FILE_TYPE = 'INPUT'
AND TABLE_ID LIKE 'CSDB_DEBT%'
ORDER BY TABLE_ID;
-- 7. Implementation Testing Summary
PROMPT
PROMPT 7. IMPLEMENTATION TESTING SUMMARY
PROMPT ================================================================
DECLARE
vCurrentMonth DATE := TRUNC(SYSDATE, 'MM');
v3MonthsAgo DATE := ADD_MONTHS(TRUNC(SYSDATE, 'MM'), -3);
v6MonthsAgo DATE := ADD_MONTHS(TRUNC(SYSDATE, 'MM'), -6);
v30DaysAgo TIMESTAMP := SYSTIMESTAMP - INTERVAL '30' DAY;
BEGIN
DBMS_OUTPUT.PUT_LINE('Reference Dates for Strategy Testing:');
DBMS_OUTPUT.PUT_LINE('--------------------------------------');
DBMS_OUTPUT.PUT_LINE('Current Month Start: ' || TO_CHAR(vCurrentMonth, 'YYYY-MM-DD'));
DBMS_OUTPUT.PUT_LINE('3 Months Ago: ' || TO_CHAR(v3MonthsAgo, 'YYYY-MM-DD'));
DBMS_OUTPUT.PUT_LINE('6 Months Ago: ' || TO_CHAR(v6MonthsAgo, 'YYYY-MM-DD'));
DBMS_OUTPUT.PUT_LINE('30 Days Ago: ' || TO_CHAR(v30DaysAgo, 'YYYY-MM-DD HH24:MI:SS'));
DBMS_OUTPUT.PUT_LINE('');
DBMS_OUTPUT.PUT_LINE('WHERE Clause Logic by Strategy:');
DBMS_OUTPUT.PUT_LINE('--------------------------------------');
DBMS_OUTPUT.PUT_LINE('1. THRESHOLD_BASED:');
DBMS_OUTPUT.PUT_LINE(' extract(day from (systimestamp - workflow_start)) > DAYS_FOR_ARCHIVE_THRESHOLD');
DBMS_OUTPUT.PUT_LINE(' Example: Data older than 30 days archived');
DBMS_OUTPUT.PUT_LINE('');
DBMS_OUTPUT.PUT_LINE('2. CURRENT_MONTH_ONLY:');
DBMS_OUTPUT.PUT_LINE(' TRUNC(workflow_start, ''MM'') < TRUNC(SYSDATE, ''MM'')');
DBMS_OUTPUT.PUT_LINE(' Example: All data from previous months archived');
DBMS_OUTPUT.PUT_LINE(' Current month data (' || TO_CHAR(vCurrentMonth, 'YYYY-MM') || ') retained');
DBMS_OUTPUT.PUT_LINE('');
DBMS_OUTPUT.PUT_LINE('3. MINIMUM_AGE_MONTHS (CSDB = 6 months):');
DBMS_OUTPUT.PUT_LINE(' workflow_start < ADD_MONTHS(TRUNC(SYSDATE, ''MM''), -6)');
DBMS_OUTPUT.PUT_LINE(' Example: Data before ' || TO_CHAR(v6MonthsAgo, 'YYYY-MM-DD') || ' archived');
DBMS_OUTPUT.PUT_LINE(' Last 6 months retained');
DBMS_OUTPUT.PUT_LINE('');
DBMS_OUTPUT.PUT_LINE('4. HYBRID (TOP = current month + 3 months):');
DBMS_OUTPUT.PUT_LINE(' TRUNC(workflow_start, ''MM'') < TRUNC(SYSDATE, ''MM'')');
DBMS_OUTPUT.PUT_LINE(' AND workflow_start < ADD_MONTHS(TRUNC(SYSDATE, ''MM''), -3)');
DBMS_OUTPUT.PUT_LINE(' Example: Previous months AND before ' || TO_CHAR(v3MonthsAgo, 'YYYY-MM-DD'));
DBMS_OUTPUT.PUT_LINE(' Both conditions must be met');
END;
/
-- 8. Business Requirements Validation
PROMPT
PROMPT 8. BUSINESS REQUIREMENTS VALIDATION
PROMPT ================================================================
DECLARE
vCsdbCount NUMBER;
vLmCount NUMBER;
vTopCount NUMBER;
BEGIN
-- Requirement 1: CSDB 6-month retention
SELECT COUNT(*) INTO vCsdbCount
FROM CT_MRDS.A_SOURCE_FILE_CONFIG
WHERE A_SOURCE_KEY = 'CSDB'
AND TABLE_ID LIKE 'CSDB_DEBT%'
AND ARCHIVAL_STRATEGY = 'MINIMUM_AGE_MONTHS'
AND MINIMUM_AGE_MONTHS = 6;
-- Requirement 2: LM/TOP current month only
SELECT COUNT(*) INTO vLmCount
FROM CT_MRDS.A_SOURCE_FILE_CONFIG
WHERE A_SOURCE_KEY IN ('LM', 'TOP')
AND ARCHIVAL_STRATEGY IN ('CURRENT_MONTH_ONLY', 'HYBRID');
DBMS_OUTPUT.PUT_LINE('Requirement 1: CSDB 6-month retention');
DBMS_OUTPUT.PUT_LINE(' Status: ' || CASE WHEN vCsdbCount >= 4 THEN 'PASS ✓' ELSE 'FAIL ✗' END);
DBMS_OUTPUT.PUT_LINE(' Configured tables: ' || vCsdbCount || ' (expected: 4)');
DBMS_OUTPUT.PUT_LINE('');
DBMS_OUTPUT.PUT_LINE('Requirement 2: Non-current month archival (LM/TOP)');
DBMS_OUTPUT.PUT_LINE(' Status: ' || CASE WHEN vLmCount > 0 THEN 'PASS ✓' ELSE 'FAIL ✗' END);
DBMS_OUTPUT.PUT_LINE(' Configured tables: ' || vLmCount);
DBMS_OUTPUT.PUT_LINE('');
DBMS_OUTPUT.PUT_LINE('Overall Implementation: ' ||
CASE WHEN vCsdbCount >= 4 AND vLmCount > 0 THEN 'SUCCESS ✓✓✓' ELSE 'INCOMPLETE' END);
END;
/
PROMPT
PROMPT ================================================================
PROMPT MARS-828: IMPLEMENTATION COMPLETE
PROMPT ================================================================
PROMPT
PROMPT Summary of Changes:
PROMPT - FILE_ARCHIVER upgraded to v3.0.0
PROMPT - Added ARCHIVAL_STRATEGY column (4 strategies supported)
PROMPT - Added MINIMUM_AGE_MONTHS column for age-based retention
PROMPT - Created validation trigger (TRG_BI_A_SRC_FILE_CFG_ARCH_VAL)
PROMPT - Implemented GET_ARCHIVAL_WHERE_CLAUSE private function
PROMPT - Updated ARCHIVE_TABLE_DATA to use strategy-based filtering
PROMPT - Updated GATHER_TABLE_STAT to use strategy-based statistics
PROMPT
PROMPT Business Requirements Met:
PROMPT CSDB data retention: 6 months (MINIMUM_AGE_MONTHS strategy)
PROMPT General archival: Current month only (CURRENT_MONTH_ONLY/HYBRID)
PROMPT Backward compatibility: THRESHOLD_BASED (existing behavior)
PROMPT
PROMPT Files Deployed:
PROMPT - 01_MARS_828_install_add_archival_strategy_columns.sql
PROMPT - 02_MARS_828_install_archival_strategy_trigger.sql
PROMPT - 03_MARS_828_install_CT_MRDS_FILE_ARCHIVER_SPEC.sql
PROMPT - 04_MARS_828_install_CT_MRDS_FILE_ARCHIVER_BODY.sql
PROMPT - 05_MARS_828_verify_installation.sql
PROMPT - 06_MARS_828_track_version.sql
PROMPT - 07_MARS_828_verify_packages_version.sql
PROMPT
PROMPT Rollback Available: rollback_mars828.sql
PROMPT ================================================================