Blame | Last modification | View Log | RSS feed
CREATE PROCEDURE "RELEASE_MANAGER"."IGNORE_DEPENDENCY_WARNINGS" ( nRtagId IN IGNORE_WARNINGS.RTAG_ID%TYPE,nPvId IN IGNORE_WARNINGS.PV_ID%TYPE,sIgnoreIdList IN VARCHAR2,bDoPatchIgnore IN BOOLEAN DEFAULT FALSE,nUserId IN NUMBER DEFAULT NULL ) IS/* ---------------------------------------------------------------------------Version: 5.0--------------------------------------------------------------------------- */oIgnoreIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();ReleaseLocation VARCHAR2(4000);ActionTypeId NUMBER;BEGINIF (NOT bDoPatchIgnore) THEN/* Manual Ignore Warnings */oIgnoreIdCollector := IN_LIST_NUMBER ( sIgnoreIdList );/* Log Action */-- Get Release LocationSELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocationFROM PROJECTS proj,RELEASE_TAGS rtWHERE rt.PROJ_ID = proj.PROJ_IDAND rt.RTAG_ID = nRtagId;-- Get Action Type Id for IGNORE_ONSELECT act.ACTTYPE_ID INTO ActionTypeIdFROM ACTION_TYPE actWHERE act.NAME = 'ignore_on';-- Get Ignored (Current MINUS Old)INSERT INTO ACTION_LOG ( USER_ID, ACTION_DATETIME, PV_ID, DESCRIPTION, ACTTYPE_ID )SELECT nUserId, ORA_SYSDATETIME, nPvId, pkg.PKG_NAME ||' '|| rpv.PKG_VERSION ||' at '|| ReleaseLocation, ActionTypeIdFROM (SELECT TO_NUMBER(nRtagId) AS RTAG_ID, TO_NUMBER(nPvId), pv.PV_ID AS DPV_IDFROM PACKAGE_VERSIONS pvWHERE pv.PV_ID IN ( SELECT * FROM TABLE ( CAST ( oIgnoreIdCollector AS RELMGR_NUMBER_TAB_t ) ) )MINUSSELECT igw.RTAG_ID, igw.PV_ID, igw.DPV_IDFROM IGNORE_WARNINGS igwWHERE igw.RTAG_ID = nRtagIdAND igw.PV_ID = nPvId) qry,PACKAGE_VERSIONS pv,PACKAGES pkg,RELEASE_CONTENT rc,PACKAGE_VERSIONS rpvWHERE pv.PKG_ID = pkg.PKG_IDAND rc.RTAG_ID = nRtagIdAND rc.PV_ID = rpv.PV_IDAND rpv.PKG_ID = pv.PKG_IDAND NVL( rpv.V_EXT, 'LINK_A_NULL' ) = NVL( pv.V_EXT, 'LINK_A_NULL' )AND qry.DPV_ID = pv.PV_ID;-- Get Action Type Id for IGNORE_OFFSELECT act.ACTTYPE_ID INTO ActionTypeIdFROM ACTION_TYPE actWHERE act.NAME = 'ignore_off';-- Get UnIgnored (Old MINUS Current)INSERT INTO ACTION_LOG ( USER_ID, ACTION_DATETIME, PV_ID, DESCRIPTION, ACTTYPE_ID )SELECT nUserId, ORA_SYSDATETIME, nPvId, pkg.PKG_NAME ||' '|| rpv.PKG_VERSION ||' at '|| ReleaseLocation, ActionTypeIdFROM (SELECT igw.RTAG_ID, igw.PV_ID, igw.DPV_IDFROM IGNORE_WARNINGS igwWHERE igw.RTAG_ID = nRtagIdAND igw.PV_ID = nPvIdMINUSSELECT TO_NUMBER(nRtagId) AS RTAG_ID, TO_NUMBER(nPvId), pv.PV_ID AS DPV_IDFROM PACKAGE_VERSIONS pvWHERE pv.PV_ID IN ( SELECT * FROM TABLE ( CAST ( oIgnoreIdCollector AS RELMGR_NUMBER_TAB_t ) ) )) qry,PACKAGE_VERSIONS pv,PACKAGES pkg,RELEASE_CONTENT rc,PACKAGE_VERSIONS rpvWHERE pv.PKG_ID = pkg.PKG_IDAND rc.RTAG_ID = nRtagIdAND rc.PV_ID = rpv.PV_IDAND rpv.PKG_ID = pv.PKG_IDAND NVL( rpv.V_EXT, 'LINK_A_NULL' ) = NVL( pv.V_EXT, 'LINK_A_NULL' )AND qry.DPV_ID = pv.PV_ID;-- Delete Current Ignore WarningsDELETEFROM IGNORE_WARNINGS igwWHERE igw.RTAG_ID = nRtagIdAND igw.PV_ID = nPvIdAND igw.IS_PATCH_IGNORE IS NULL;IF (oIgnoreIdCollector.COUNT > 0) THEN-- Insert Ignore WarningsINSERT INTO IGNORE_WARNINGS igw ( RTAG_ID, PV_ID, DPV_ID )SELECT nRtagId,nPvId,pv.PV_ID AS DPV_IDFROM PACKAGE_VERSIONS pvWHERE pv.PV_ID IN ( SELECT * FROM TABLE ( CAST ( oIgnoreIdCollector AS RELMGR_NUMBER_TAB_t ) ) );END IF;-- Touch Release if package is in Release AreaIF PK_ENVIRONMENT.GET_PACKAGE_AREA ( nPvId, nRtagId ) = 2 THENTouch_Release (nRtagId);END IF;ELSE/* Patch Ignore Warnings */-- Delete Current Patch Ignore WarningsDELETEFROM IGNORE_WARNINGS igwWHERE igw.RTAG_ID = nRtagIdAND igw.IS_PATCH_IGNORE = 'Y';-- Delete Manual Ignores that need to be Patch IgnoresDELETEFROM IGNORE_WARNINGS igwWHERE ( RTAG_ID, PV_ID, DPV_ID ) IN(SELECT DISTINCTnRtagId,err.PV_ID,err.ERR_DPV AS DPV_IDFROM(/* Full Release Contents used for reference*/SELECT rpv.PV_ID, rpv.pkg_id, NVL(rpv.v_ext, '|LINK_A_NULL|') AS v_ext --, rpv.pkg_version, rpv.v_nmm, rpv.v_mmFROM release_content rel, package_versions rpvWHERE rel.pv_id = rpv.pv_idAND rtag_id = nRtagId) frc,(/* DPV_IDs not fount in release*/SELECT dep.pv_id, dep.dpv_id AS err_dpvFROM package_dependencies depWHERE dep.pv_id IN ( SELECT pv_id FROM release_content WHERE rtag_id = nRtagId )AND NOT dep.dpv_id IN ( SELECT pv_id FROM release_content WHERE rtag_id = nRtagId )) err,(SELECT DISTINCT pp.PV_ID, dep.DPV_IDFROM PACKAGE_PATCHES pp,PACKAGE_DEPENDENCIES dep,RELEASE_CONTENT rcWHERE rc.RTAG_ID = nRtagIdAND rc.PV_ID = pp.PV_IDAND dep.PV_ID = pp.PATCH_ID) pp,package_versions errpkg,package_versions errpvWHERE err.err_dpv = errpv.pv_idAND errpv.pkg_id = frc.pkg_id(+)AND NVL(errpv.v_ext, '|LINK_A_NULL|') = frc.v_ext(+)AND err.pv_id = errpkg.pv_idAND err.PV_ID = pp.PV_IDAND frc.PV_ID = pp.DPV_ID);/*----------------------------------------------------- Make sure that select statement above and below are same---------------------------------------------------*/-- Insert Patch IgnoresINSERT INTO IGNORE_WARNINGS igw ( RTAG_ID, PV_ID, DPV_ID, IS_PATCH_IGNORE )SELECT DISTINCTnRtagId,err.PV_ID,err.ERR_DPV AS DPV_ID,'Y'FROM(/* Full Release Contents used for reference*/SELECT rpv.PV_ID, rpv.pkg_id, NVL(rpv.v_ext, '|LINK_A_NULL|') AS v_ext --, rpv.pkg_version, rpv.v_nmm, rpv.v_mmFROM release_content rel, package_versions rpvWHERE rel.pv_id = rpv.pv_idAND rtag_id = nRtagId) frc,(/* DPV_IDs not fount in release*/SELECT dep.pv_id, dep.dpv_id AS err_dpvFROM package_dependencies depWHERE dep.pv_id IN ( SELECT pv_id FROM release_content WHERE rtag_id = nRtagId )AND NOT dep.dpv_id IN ( SELECT pv_id FROM release_content WHERE rtag_id = nRtagId )) err,(SELECT DISTINCT pp.PV_ID, dep.DPV_IDFROM PACKAGE_PATCHES pp,PACKAGE_DEPENDENCIES dep,RELEASE_CONTENT rcWHERE rc.RTAG_ID = nRtagIdAND rc.PV_ID = pp.PV_IDAND dep.PV_ID = pp.PATCH_ID) pp,package_versions errpkg,package_versions errpvWHERE err.err_dpv = errpv.pv_idAND errpv.pkg_id = frc.pkg_id(+)AND NVL(errpv.v_ext, '|LINK_A_NULL|') = frc.v_ext(+)AND err.pv_id = errpkg.pv_idAND err.PV_ID = pp.PV_IDAND frc.PV_ID = pp.DPV_ID;END IF;END Ignore_Dependency_Warnings;/