Subversion Repositories DevTools

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
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
/