Subversion Repositories DevTools

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
221 vnguyen 1
CREATE PROCEDURE "RELEASE_MANAGER"."IGNORE_DEPENDENCY_WARNINGS" ( nRtagId IN IGNORE_WARNINGS.RTAG_ID%TYPE,
2
														 nPvId IN IGNORE_WARNINGS.PV_ID%TYPE,
3
                                                         sIgnoreIdList IN VARCHAR2,
4
                                                         bDoPatchIgnore IN BOOLEAN DEFAULT FALSE,
5
                                                         nUserId IN NUMBER DEFAULT NULL ) IS
6
/* ---------------------------------------------------------------------------
7
    Version: 5.0
8
   --------------------------------------------------------------------------- */
9
 
10
oIgnoreIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
11
ReleaseLocation VARCHAR2(4000);
12
ActionTypeId NUMBER;
13
 
14
BEGIN
15
 
16
 
17
   	IF (NOT bDoPatchIgnore) THEN
18
    	/* Manual Ignore Warnings */
19
        oIgnoreIdCollector := IN_LIST_NUMBER ( sIgnoreIdList );
20
 
21
 
22
        /* Log Action */
23
        -- Get Release Location
24
        SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
25
		  FROM PROJECTS proj,
26
		  	   RELEASE_TAGS rt
27
		 WHERE rt.PROJ_ID = proj.PROJ_ID
28
		   AND rt.RTAG_ID = nRtagId;
29
 
30
        -- Get Action Type Id for IGNORE_ON
31
        SELECT act.ACTTYPE_ID INTO ActionTypeId
32
	      FROM ACTION_TYPE act
33
	     WHERE act.NAME = 'ignore_on';
34
 
35
        -- Get Ignored (Current MINUS Old)
36
        INSERT INTO ACTION_LOG ( USER_ID, ACTION_DATETIME, PV_ID, DESCRIPTION, ACTTYPE_ID )
37
		SELECT nUserId, ORA_SYSDATETIME, nPvId, pkg.PKG_NAME ||' '|| rpv.PKG_VERSION ||' at '|| ReleaseLocation, ActionTypeId
38
		  FROM (
39
		      SELECT TO_NUMBER(nRtagId) AS RTAG_ID, TO_NUMBER(nPvId), pv.PV_ID AS DPV_ID
40
		        FROM PACKAGE_VERSIONS pv
41
		       WHERE pv.PV_ID IN ( SELECT * FROM TABLE ( CAST ( oIgnoreIdCollector AS RELMGR_NUMBER_TAB_t ) ) )
42
		      MINUS
43
		      SELECT igw.RTAG_ID, igw.PV_ID, igw.DPV_ID
44
		        FROM IGNORE_WARNINGS igw
45
		       WHERE igw.RTAG_ID = nRtagId
46
		         AND igw.PV_ID = nPvId
47
		       ) qry,
48
		       PACKAGE_VERSIONS pv,
49
		       PACKAGES pkg,
50
		       RELEASE_CONTENT rc,
51
		       PACKAGE_VERSIONS rpv
52
		 WHERE pv.PKG_ID = pkg.PKG_ID
53
		   AND rc.RTAG_ID = nRtagId
54
		   AND rc.PV_ID = rpv.PV_ID
55
		   AND rpv.PKG_ID = pv.PKG_ID
56
		   AND NVL( rpv.V_EXT, 'LINK_A_NULL' ) = NVL( pv.V_EXT, 'LINK_A_NULL' )
57
		   AND qry.DPV_ID = pv.PV_ID;
58
 
59
 
60
        -- Get Action Type Id for IGNORE_OFF
61
        SELECT act.ACTTYPE_ID INTO ActionTypeId
62
	      FROM ACTION_TYPE act
63
	     WHERE act.NAME = 'ignore_off';
64
 
65
        -- Get UnIgnored (Old MINUS Current)
66
        INSERT INTO ACTION_LOG ( USER_ID, ACTION_DATETIME, PV_ID, DESCRIPTION, ACTTYPE_ID )
67
		SELECT nUserId, ORA_SYSDATETIME, nPvId, pkg.PKG_NAME ||' '|| rpv.PKG_VERSION ||' at '|| ReleaseLocation, ActionTypeId
68
		  FROM (
69
		      SELECT igw.RTAG_ID, igw.PV_ID, igw.DPV_ID
70
		          FROM IGNORE_WARNINGS igw
71
		         WHERE igw.RTAG_ID = nRtagId
72
		           AND igw.PV_ID = nPvId
73
                MINUS
74
                SELECT TO_NUMBER(nRtagId) AS RTAG_ID, TO_NUMBER(nPvId), pv.PV_ID AS DPV_ID
75
		          FROM PACKAGE_VERSIONS pv
76
		         WHERE pv.PV_ID IN ( SELECT * FROM TABLE ( CAST ( oIgnoreIdCollector AS RELMGR_NUMBER_TAB_t ) ) )
77
		       ) qry,
78
		       PACKAGE_VERSIONS pv,
79
		       PACKAGES pkg,
80
		       RELEASE_CONTENT rc,
81
		       PACKAGE_VERSIONS rpv
82
		 WHERE pv.PKG_ID = pkg.PKG_ID
83
		   AND rc.RTAG_ID = nRtagId
84
		   AND rc.PV_ID = rpv.PV_ID
85
		   AND rpv.PKG_ID = pv.PKG_ID
86
		   AND NVL( rpv.V_EXT, 'LINK_A_NULL' ) = NVL( pv.V_EXT, 'LINK_A_NULL' )
87
		   AND qry.DPV_ID = pv.PV_ID;
88
 
89
 
90
 
91
       	-- Delete Current Ignore Warnings
92
	    DELETE
93
	      FROM IGNORE_WARNINGS igw
94
	     WHERE igw.RTAG_ID = nRtagId
95
	       AND igw.PV_ID = nPvId
96
	       AND igw.IS_PATCH_IGNORE IS NULL;
97
 
98
 
99
        IF (oIgnoreIdCollector.COUNT > 0) THEN
100
		    -- Insert Ignore Warnings
101
		    INSERT INTO IGNORE_WARNINGS igw ( RTAG_ID, PV_ID, DPV_ID )
102
		    SELECT nRtagId,
103
	        	   nPvId,
104
	               pv.PV_ID AS DPV_ID
105
	          FROM PACKAGE_VERSIONS pv
106
	         WHERE pv.PV_ID IN ( SELECT * FROM TABLE ( CAST ( oIgnoreIdCollector AS RELMGR_NUMBER_TAB_t ) ) );
107
        END IF;
108
 
109
 
110
		-- Touch Release if package is in Release Area
111
		IF PK_ENVIRONMENT.GET_PACKAGE_AREA ( nPvId, nRtagId ) = 2 THEN
112
			Touch_Release (nRtagId);
113
		END IF;
114
 
115
	ELSE
116
       	/* Patch Ignore Warnings */
117
 
118
        -- Delete Current Patch Ignore Warnings
119
	    DELETE
120
	      FROM IGNORE_WARNINGS igw
121
	     WHERE igw.RTAG_ID = nRtagId
122
	       AND igw.IS_PATCH_IGNORE = 'Y';
123
 
124
 
125
        -- Delete Manual Ignores that need to be Patch Ignores
126
	    DELETE
127
	      FROM IGNORE_WARNINGS igw
128
	     WHERE ( RTAG_ID, PV_ID, DPV_ID ) IN
129
         	(
130
				SELECT DISTINCT
131
                       nRtagId,
132
					   err.PV_ID,
133
                       err.ERR_DPV AS DPV_ID
134
				  FROM
135
				       (
136
				       /* Full Release Contents used for reference*/
137
				       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_mm
138
				         FROM release_content rel, package_versions rpv
139
				        WHERE rel.pv_id = rpv.pv_id
140
				          AND rtag_id = nRtagId
141
				       ) frc,
142
				       (
143
				        /* DPV_IDs not fount in release*/
144
				        SELECT dep.pv_id, dep.dpv_id AS err_dpv
145
				          FROM package_dependencies dep
146
				         WHERE dep.pv_id IN ( SELECT pv_id FROM release_content WHERE rtag_id = nRtagId )
147
				           AND NOT dep.dpv_id IN ( SELECT pv_id FROM release_content WHERE rtag_id = nRtagId )
148
				       ) err,
149
				       (
150
				        SELECT DISTINCT pp.PV_ID, dep.DPV_ID
151
				          FROM PACKAGE_PATCHES pp,
152
				          	   PACKAGE_DEPENDENCIES dep,
153
				          	   RELEASE_CONTENT rc
154
				         WHERE rc.RTAG_ID = nRtagId
155
				           AND rc.PV_ID = pp.PV_ID
156
				           AND dep.PV_ID = pp.PATCH_ID
157
				       ) pp,
158
				       package_versions errpkg,
159
				       package_versions errpv
160
				 WHERE err.err_dpv = errpv.pv_id
161
				   AND errpv.pkg_id = frc.pkg_id(+)
162
				   AND NVL(errpv.v_ext, '|LINK_A_NULL|') = frc.v_ext(+)
163
				   AND err.pv_id = errpkg.pv_id
164
				   AND err.PV_ID = pp.PV_ID
165
				   AND frc.PV_ID = pp.DPV_ID
166
			);
167
 
168
        /*
169
        ---------------------------------------------------
170
        --  Make sure that select statement above and below are same
171
        ---------------------------------------------------
172
        */
173
 
174
 
175
		-- Insert Patch Ignores
176
		INSERT INTO IGNORE_WARNINGS igw ( RTAG_ID, PV_ID, DPV_ID, IS_PATCH_IGNORE )
177
		SELECT DISTINCT
178
			   nRtagId,
179
		       err.PV_ID,
180
		       err.ERR_DPV AS DPV_ID,
181
		       'Y'
182
		  FROM
183
		       (
184
		       /* Full Release Contents used for reference*/
185
		       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_mm
186
		         FROM release_content rel, package_versions rpv
187
		        WHERE rel.pv_id = rpv.pv_id
188
		          AND rtag_id = nRtagId
189
		       ) frc,
190
		       (
191
		        /* DPV_IDs not fount in release*/
192
		        SELECT dep.pv_id, dep.dpv_id AS err_dpv
193
		          FROM package_dependencies dep
194
		         WHERE dep.pv_id IN ( SELECT pv_id FROM release_content WHERE rtag_id = nRtagId )
195
		           AND NOT dep.dpv_id IN ( SELECT pv_id FROM release_content WHERE rtag_id = nRtagId )
196
		       ) err,
197
		       (
198
		        SELECT DISTINCT pp.PV_ID, dep.DPV_ID
199
		          FROM PACKAGE_PATCHES pp,
200
		          	   PACKAGE_DEPENDENCIES dep,
201
		          	   RELEASE_CONTENT rc
202
		         WHERE rc.RTAG_ID = nRtagId
203
		           AND rc.PV_ID = pp.PV_ID
204
		           AND dep.PV_ID = pp.PATCH_ID
205
		       ) pp,
206
		       package_versions errpkg,
207
		       package_versions errpv
208
		 WHERE err.err_dpv = errpv.pv_id
209
		   AND errpv.pkg_id = frc.pkg_id(+)
210
		   AND NVL(errpv.v_ext, '|LINK_A_NULL|') = frc.v_ext(+)
211
		   AND err.pv_id = errpkg.pv_id
212
		   AND err.PV_ID = pp.PV_ID
213
		   AND frc.PV_ID = pp.DPV_ID;
214
 
215
 
216
    END IF;
217
 
218
 
219
END Ignore_Dependency_Warnings;
220
/