| 221 |
vnguyen |
1 |
CREATE PROCEDURE "RELEASE_MANAGER"."CHECK_NEW_PATCHES" (
|
|
|
2 |
nrtagid IN release_content.rtag_id%TYPE
|
|
|
3 |
)
|
|
|
4 |
IS
|
|
|
5 |
/* ---------------------------------------------------------------------------
|
|
|
6 |
Version: 3.0
|
|
|
7 |
--------------------------------------------------------------------------- */
|
|
|
8 |
BEGIN
|
|
|
9 |
/*--------------- Business Rules Here -------------------*/
|
|
|
10 |
/*IF nRtagId NOT IN (SELECT RTAG_ID FROM RELEASE_TAGS ) THEN
|
|
|
11 |
RAISE_APPLICATION_ERROR (-20000, 'Please contact the person in charge of Release Manager now.' );
|
|
|
12 |
END IF
|
|
|
13 |
|
|
|
14 |
/*-------------------------------------------------------*/
|
|
|
15 |
UPDATE release_content rc
|
|
|
16 |
SET rc.pkg_state = 5 -- enumPKG_STATE_NEW_PATCH
|
|
|
17 |
WHERE rc.pv_id IN (
|
|
|
18 |
SELECT prod.pv_id
|
|
|
19 |
FROM (SELECT pp.pv_id AS orig_parent_id,
|
|
|
20 |
COUNT (*) AS num_of_patches
|
|
|
21 |
FROM release_content rc, package_patches pp
|
|
|
22 |
WHERE rc.pv_id = pp.pv_id AND rc.rtag_id = nrtagid
|
|
|
23 |
GROUP BY pp.pv_id) orig,
|
|
|
24 |
(SELECT prodpp.pv_id, pp.pv_id AS parent_id,
|
|
|
25 |
COUNT (*) AS num_of_patches
|
|
|
26 |
FROM release_content rc,
|
|
|
27 |
package_patches pp,
|
|
|
28 |
package_dependencies dep,
|
|
|
29 |
package_versions pv,
|
|
|
30 |
package_patches prodpp
|
|
|
31 |
WHERE rc.pv_id = pp.pv_id
|
|
|
32 |
AND rc.rtag_id = nrtagid
|
|
|
33 |
AND pp.patch_id = dep.dpv_id
|
|
|
34 |
AND dep.pv_id = pv.pv_id
|
|
|
35 |
AND pv.is_patch = 'Y'
|
|
|
36 |
AND pv.dlocked = 'Y'
|
|
|
37 |
AND prodpp.patch_id = dep.pv_id
|
|
|
38 |
GROUP BY prodpp.pv_id, pp.pv_id) prod,
|
|
|
39 |
release_content rc
|
|
|
40 |
WHERE orig.orig_parent_id = prod.pv_id
|
|
|
41 |
AND orig.num_of_patches != prod.num_of_patches
|
|
|
42 |
AND rc.rtag_id = nrtagid
|
|
|
43 |
AND rc.pv_id = prod.pv_id
|
|
|
44 |
AND rc.pkg_state = 0
|
|
|
45 |
UNION
|
|
|
46 |
SELECT prodpp.pv_id
|
|
|
47 |
FROM release_content rc,
|
|
|
48 |
package_patches pp,
|
|
|
49 |
package_dependencies dep,
|
|
|
50 |
package_versions pv,
|
|
|
51 |
package_patches prodpp
|
|
|
52 |
WHERE rc.pv_id = pp.pv_id
|
|
|
53 |
AND rc.rtag_id = nrtagid
|
|
|
54 |
AND pp.patch_id = dep.dpv_id
|
|
|
55 |
AND dep.pv_id = pv.pv_id
|
|
|
56 |
AND pv.is_patch = 'Y'
|
|
|
57 |
AND pv.dlocked = 'Y'
|
|
|
58 |
AND prodpp.patch_id = dep.pv_id
|
|
|
59 |
GROUP BY prodpp.pv_id, pp.pv_id
|
|
|
60 |
MINUS
|
|
|
61 |
SELECT pp.pv_id
|
|
|
62 |
FROM release_content rc, package_patches pp
|
|
|
63 |
WHERE rc.pv_id = pp.pv_id AND rc.rtag_id = nrtagid
|
|
|
64 |
GROUP BY pp.pv_id);
|
|
|
65 |
END check_new_patches;
|
|
|
66 |
/
|